Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sprawdzenie ile linia w pliku ma znaków

Ostatnio zmodyfikowano 2012-05-19 14:32
Autor Wiadomość
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:
C/C++
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.
P-56970
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'
P-56971
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?
P-56972
pekfos
» 2012-05-19 13:03:05
http://www.cplusplus.com/reference/iostream/istream/getline/

to też powinno działać:
C/C++
string str;
getline( ifs, str );
int l = str.size();
http://www.cplusplus.com/reference/string/getline/
If the delimiter is found, it is extracted and discarded, i.e. it is not stored and the next input operation will begin after it.
P-56973
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ć?
P-56975
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] string
» standard C++string
P-56979
pekfos
» 2012-05-19 13:48:51
C/C++
#include <cctype>
for( size_t a = 0; a < str.size(); ++a )
{
    if( !isspace( str[ a ] ) ) ++result;
   
}
P-56980
Winner
Temat założony przez niniejszego użytkownika
» 2012-05-19 14:03:13
A ja zrobiłem takie coś:
C/C++
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.
P-56986
« 1 » 2
  Strona 1 z 2 Następna strona