aaadam Temat założony przez niniejszego użytkownika |
kod asci pobieranie znaku nowej lini (buildier c++) » 2015-09-02 17:25:54 witam plik wczytywany wygląda tak : rozdział,paragraf,bz,kwota 75647,6060,,37.81 75647,4300,,757.92 75647,6060,,945.42 75647,4300,,478.74 75095,4300,,872.21 75095,4750,,377.50 75095,4300,,683.36 75095,4550,,254.04 chcę pobrać pierwsze rekordy tego pliku do wektora (proszę wziąć pod uwagę że to nie jest końcowa wersja kodu) : try { fstream plik; plik.open( "D:\\data1.csv" ); vector < string > wek1; if( plik.good() ) { char napis; cout << "Zawartosc pliku:" << endl; string string_tmp; int zmienna_petli = 0; while( !plik.eof() ) { plik >> napis; if( napis == 44 || napis == 13 || napis == 10 ) { zmienna_petli++; wek1.push_back( string_tmp ); } if( zmienna_petli == 3 ) zmienna_petli = 0; if( zmienna_petli == 0 ) { string_tmp += napis; } } Tresc->Text =( string_tmp.c_str() ); for( int i = 0; i <( int ) wek1.size(); i++ ) Wynik1->Text = wek1[ i ].c_str(); plik.close(); ShowMessage( "udało sie" ); } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl; }
problem polega na tym że program nie umieszcza w wektorze tego co bym chciał ponieważ wydaje mi się że nie rozpoznaje znaku nowej linii a w ASCI jest to 10 lub 13 gdy zrobie tak : rozdział,paragraf,bz,kwota 75647,6060,,37.81, 75647,4300,,757.92, 75647,6060,,945.42, 75647,4300,,478.74, 75095,4300,,872.21, 75095,4750,,377.50, 75095,4300,,683.36, 75095,4550,,254.04, i zmienię część kodu if( zmienna_petli == 3 ) zmienna_petli = 0;
na if( zmienna_petli == 4 ) zmienna_petli = 0;
to wszystko działa okej proszę o pomoc |
|
pekfos |
» 2015-09-02 17:40:16 Zainteresuj się funkcją getline(). |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2015-09-02 17:57:56 wiem, że mogę tą funkcją ale nie lepiej działać na strumieniu ?
|
|
pekfos |
» 2015-09-02 19:22:19 wiem, że mogę tą funkcją ale nie lepiej działać na strumieniu ? |
Co..? A ta funkcja co niby robi? |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2015-09-02 19:32:45 getline() pobiera daną linie z pliku o ile mi wiadomo. A wolę pobierać znak po znaku. |
|
pekfos |
» 2015-09-02 19:38:39 A wolę pobierać znak po znaku. |
Po co? 'O ile tobie wiadomo' brzmi niewystarczająco. |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2015-09-02 20:19:42 jeżeli będę pobierał w ten sposób : plik.open( "D:\\data1.csv" );
if( plik.good() ) { char napis; while( !plik.eof() ) { plik >> napis; . . . . .
to będę pobierał znak po znaku i taka wersja mi bardziej pasuje, tylko nie wiem czemu nie odczytuje mi końca linii poprostu jak mam plik : 75647,6060,1,37.81 75647,4300,2,757.92 75647,6060,3,945.42 75647,4300,4,478.74 75095,4300,5,872.21 75095,4750,6,377.50 to chce pobrać te wartości oddzielone przecinkami do wektorów lub jakiś pojemników z tym, że nie wykrywa mi znaku końca linii. Wektory powinny wyglądać tak : wek1 [ 75647,75647,75647,75647,75095,75095] 1 kolumna wek2 [ 6060 ,4300,6060,4300,4300,4750] 2 kolumna itd |
|
pekfos |
» 2015-09-02 20:35:55 |
|
« 1 » 2 |