Kopiowanie zmiennych typu string
Ostatnio zmodyfikowano 2017-06-23 16:00
1aam2am1 |
» 2017-06-19 21:23:29 Tego się tak nie robi. Nie w każdym wierszu masz takie same dane lub ilość. W każdym wierszu o ile znam się na gcode jest G0 lub G1 tryb ruchu, lub inna komenda X... Y... - ruch w poziomie Z... - ruch w pionie bo obydwa nie mogą dziać się na raz (w pionie i poziomie) E i F -prędkość i pozycja
Według mnie nie powinieneś obrabiać stringów tak jak próbujesz tylko:
1. Zadeklaruj trzy zmienne x,y,z 2. Wczytuj każdą linię z pliku pojedynczo 3. Jeżeli znaleziono X to wpisz wartość do X, Znaleziono Y to do Y, itd... 4. Jeżeli koniec linii to wypisz wartości x, y, z do pliku z przerobionymi danymi. |
|
wisnia633 Temat założony przez niniejszego użytkownika |
» 2017-06-23 16:00:39 Witam, Co do gkodu, to zależy od efektu końcowego ja potrzebuje tak naprawdę zbiór punktów (x,y,z). Pozostałe oznaczenia muszę i tak usunąć. Wracając do tematu napisałem funkcję która ma teoretycznie na postawie znalezienia x,y,e kopiować wartość zmienneZmiennejZ w miejsce znalezienia E-1. Szukanie zmiennych działa poprawnie, przekazanie działa ok. Nie działa tylko "insert" i teraz nie wiem dlaczego. Podejrzewam że znowu źle mogę interpretować założenia programu. #include <iostream> #include <fstream> #include <string> using namespace std;
string szukanieZ( string & wiersz_konwert ) { char szukanyZnakZ = 'Z'; string wartoscZmiennejZ; size_t foundZ = wiersz_konwert.find( szukanyZnakZ ); if( foundZ != string::npos ) { wartoscZmiennejZ = wiersz_konwert.substr( foundZ + 1, 6 ); cout << wartoscZmiennejZ << endl; } return wartoscZmiennejZ; }
string kopiowanieZ( string & przeszukiwane, string & dopisywanieZ ) { char szukanyZnakE = 'E'; char szukanyZnakX = 'X'; char szukanyZnakY = 'Y'; size_t foundX = przeszukiwane.find( szukanyZnakX ); size_t foundY = przeszukiwane.find( szukanyZnakY ); size_t foundE = przeszukiwane.find( szukanyZnakE ); if( foundE != string::npos && foundX != string::npos && foundY != string::npos ) przeszukiwane.insert( foundE - 1, dopisywanieZ ); return przeszukiwane; }
int main() { string nazwa_pliku; cout << "Podaj nazwe pliku: " << endl; cin >> nazwa_pliku; ifstream plik( nazwa_pliku.c_str(), ios::in ); ofstream nowy( "punkty.txt", ios::out | ios::app ); if( plik.good() == true ) { int nr_wiersza_odczyt = 0; while( !plik.eof() ) { string wiersz_odczyt; string wartoscZmiennejZ; getline( plik, wiersz_odczyt ); szukanieZ( wiersz_odczyt ); kopiowanieZ( wiersz_odczyt, wartoscZmiennejZ ); nowy << kopiowanieZ( wiersz_odczyt, wartoscZmiennejZ ) << endl; nr_wiersza_odczyt++; } cout << nr_wiersza_odczyt << endl; } else cout << "ERROR\n\n"; plik.close(); nowy.close(); }
|
|
1 2 « 3 » |