Kopiowanie zmiennych typu string
Ostatnio zmodyfikowano 2017-06-23 16:00
wisnia633 Temat założony przez niniejszego użytkownika |
» 2017-06-18 08:01:56 Dodałem test na sprawdzający znalezienie 'Z'. Program kopiuje wartość do zmiennej, natomiast w momencie zakończenie warunku if program jak by przestał działać i nie wykonuje reszty instrukcji po bloku. string kopiowanie( string wiersz_konwert ) { char szukanyZnakZ = 'Z'; char szukanyZnakE = 'E'; string wartoscZmiennejZ; size_t foundZ = wiersz_konwert.find( szukanyZnakZ ); if( foundZ != string::npos ) { wartoscZmiennejZ = wiersz_konwert.substr( foundZ + 1, 6 ); } size_t foundE = wiersz_konwert.find( szukanyZnakE ); if( foundE != string::npos ) { wiersz_konwert.insert( foundE, wartoscZmiennejZ ); } return wiersz_konwert; }
|
|
pekfos |
» 2017-06-18 15:41:47 Dla jakich danych ten kod źle działa? |
|
wisnia633 Temat założony przez niniejszego użytkownika |
» 2017-06-18 19:48:28 Założeniem kodu było odnalezienie znaku Z i skopiowanie znaków następujących po (w tym wypadku 0.300) do zmiennej wartoscZmiennejZ, do tego momentu działa. Kolejna część kodu powinna odnaleźć zmienną E i wkleić przed nią wartoscZmiennejZ. Tu właśnie pojawia się problem, bo przy obecnym ustawieniu warunków nic się nie dzieje. Kod działał w momencie usunięcia testu znalezienia Z, ale kopiował tylko pierwsze 6 znaków z danej linii i wklejał przed znalezione E. A takie nie było założenie kodu. string kopiowanie( string wiersz_konwert ) { char szukanyZnakZ = 'Z'; char szukanyZnakE = 'E'; string wartoscZmiennejZ; size_t foundZ = wiersz_konwert.find( szukanyZnakZ ); if( foundZ != string::npos ) { wartoscZmiennejZ = wiersz_konwert.substr( foundZ + 1, 6 ); } size_t foundE = wiersz_konwert.find( szukanyZnakE ); if( foundE != string::npos ) { wiersz_konwert.insert( foundE, wartoscZmiennejZ ); } return wiersz_konwert; }
G0 F4800 E-1.0000 G0 F300 Z0.300 G0 X0.000 Y0.000 F10800 G1 X149.505 Y113.865 E9.3758 F600 G1 X149.505 Y86.250 E10.7535 G1 X152.946 Y86.250 E10.9251 G1 X152.946 Y113.865 E12.3028
|
|
pekfos |
» 2017-06-19 11:09:37 W tych danych nie ma wiersza, który zawiera Z i E. |
|
wisnia633 Temat założony przez niniejszego użytkownika |
» 2017-06-19 19:05:58 Czyli teraz żeby osiągnąć pożądany efekt powinienem napisać funkcję która dostanie dwie zmienne "wartoscZmiennejZ, wiersz_odczyt" i tam powinienem poszukać znaków X,Y,E i wkleić to co mi potrzebne? |
|
pekfos |
» 2017-06-19 19:28:36 A jaki jest pożądany efekt? |
|
wisnia633 Temat założony przez niniejszego użytkownika |
» 2017-06-19 20:47:57 Pożądany efekt to wstawienie wartoscZmiennejZ w miejscu występowania w jednym wierszu X,Y,E, później muszę pousuwać kilka znaków ze miedzyinnymi X,Y,E,G1 itd. Poniżej efekt jaki oczekuje ostatecznie od programu. Pierwszy log to stan obecny "pośredni", drugi to stan końcowy jaki jest mi ostatecznie potrzebny. G0 F4800 E-1.0000 G0 F300 Z0.300 G0 X0.000 Y0.000 F10800 G1 X149.505 Y113.865 E9.3758 F600 G1 X149.505 Y86.250 E10.7535 G1 X152.946 Y86.250 E10.9251 G1 X152.946 Y113.865 E12.3028
149.505 113.865 0.300 149.505 86.250 0.300 152.946 86.250 0.300 152.946 113.865 0.300 [/log/
|
|
pekfos |
» 2017-06-19 20:50:28 Przekazuj wartoscZmiennejZ do funkcji przez referencję. |
|
1 « 2 » 3 |