Sprawdzenie ile linia w pliku ma znaków
Ostatnio zmodyfikowano 2012-05-19 14:32
Winner Temat założony przez niniejszego użytkownika |
Sprawdzenie ile linia w pliku ma znaków » 2012-05-19 12:39:19 Witam, napisałem taki kod: std::ifstream plik2; plik2.open( "dane.txt" ); char ilosc[ 255 ]; plik2.getline( ilosc, 255 ); std::cout << "Wczytano " << plik2.gcount() << " bajtów do bufora" << std::endl; I jak się zapewne domyślacie ma on zwrócić ile jedna linia w pliku ma znaków. Jednak zwraca mi wartość 11. A plik wygląda tak: 1 1 1 1 1 1 1 1 1 1 1 3 1 2 3 1 3 4 2 3 1 2 3 4 5 1 2 4 2 1 1 2 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Jak widać jedna linia ma 9 znaków (jeżeli spacje się liczą) a nie 11. |
|
szyx_yankez |
» 2012-05-19 12:51:45 Na końcu każdej linij Twojego pliku jest spacja, ponadto liczony jest też znak nowej linij '\n' |
|
Winner Temat założony przez niniejszego użytkownika |
» 2012-05-19 13:00:40 A da się jakoś zrobić tak, żeby spacje nie byly liczone ani znak nowej linij? Nie wiem, może odjąć jakąś wartośc względem wszystkich znaków. Macie jakieś pomysły? |
|
pekfos |
» 2012-05-19 13:03:05 |
|
Winner Temat założony przez niniejszego użytkownika |
» 2012-05-19 13:18:09 Okey, teraz jest 10 bajtów. A macie jakieś pomysły, zeby było tylko 5 bajtów? Zn. nie czytało spacji między liczbami. Ja miałem taki pomysł, żeby odczytać ile bajtów ma ta linia(tak jak teraz czyli np. 10) i podzielić to na 2 i uzyskaną wartość odjąć od tych 10, czyli wyjdzie 5. Jak myślicie będzie to działać? |
|
SeaMonster131 |
» 2012-05-19 13:37:21 nie czytało spacji między liczbami |
Hmm ja bym w pętli przeleciał przez całego stringa i jakbym napotkał spację, to bym ją usunął. Jeżeli o to chodzi. [Biblioteka] stringstring |
|
pekfos |
» 2012-05-19 13:48:51 #include <cctype> for( size_t a = 0; a < str.size(); ++a ) { if( !isspace( str[ a ] ) ) ++result; } |
|
Winner Temat założony przez niniejszego użytkownika |
» 2012-05-19 14:03:13 A ja zrobiłem takie coś: getline( plik2, str ); int I = 0; I = str.size(); I =( I / 2 ) + 1; std::cout << "Wczytano " << I << " bajtów do bufora" << std::endl; i narazie działa idealnie. |
|
« 1 » 2 |