Liczenie kolumn z pliku txt.
Ostatnio zmodyfikowano 2014-05-09 19:39
NowyCC Temat założony przez niniejszego użytkownika |
Liczenie kolumn z pliku txt. » 2014-05-09 14:11:29 Witam Mam mały problem z liczeniem kolumn z pliku .txt. W pliku jest jakaś ilość kolumn oddzielonych od siebie tabulatorami. Kod: 1 2 3 4 5 6 7 3 4 5 6 7 8 9 4 5 6 7 8 9 9 1 2 4 5 6 7 8
Tutaj to co napisałem. Kod:
#include <iostream> #include <fstream> #include <cstdlib> #include <cstring> using namespace std;
int main() { int ilosc_kolumn; fstream plik; string wiersz; plik.open( "plik.txt" ); if( plik.is_open() ) cout << "Plik otwarty" << endl; else { cout << "Brak pliku" << endl; return 0; } getline( plik, wiersz ); ilosc_kolumn = wiersz.length(); for( int i = 0; i < wiersz.length(); i++ ) { if( wiersz[ i ] == '\t' ) ilosc_kolumn--; } plik.close(); cout << "Ilosc kolumn -> " << ilosc_kolumn << endl; system( "pause" ); return 0; }
I teraz chcę je policzyć i tu sie pojawia problem, gdyż to co napisałem nie zawsze działa :) raz niby wylicza a raz wylicza o jedną kolumne więcej. Więc może ktoś zna jakieś lepsze rozwiązanie. Pozdrawiam :) |
|
Monika90 |
» 2014-05-09 16:42:58 może tak?
std::size_t count_words(const std::string& str) { std::size_t count = 0; std::size_t i = 0; while (i < str.size()) { while (i < str.size() && std::isspace(str[i])) ++i; if (i < str.size()) ++count; while (i < str.size() && !std::isspace(str[i])) ++i; } return count; }
|
|
NowyCC Temat założony przez niniejszego użytkownika |
» 2014-05-09 19:39:06 Działa dobrze:) o coś takiego mi chodziło, o to isspace :) Dziekuje bardzo :) Pozdrawiam :) |
|
« 1 » |