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

Liczenie kolumn z pliku txt.

Ostatnio zmodyfikowano 2014-05-09 19:39
Autor Wiadomość
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:

C/C++
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.

C/C++
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 :)
P-109565
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;
}

P-109571
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 :)
P-109588
« 1 »
  Strona 1 z 1