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

Odczyt danych z pliku - tekst rodzielony znakami TAB

Ostatnio zmodyfikowano 2017-07-27 18:58
Autor Wiadomość
PL_Andrev
Temat założony przez niniejszego użytkownika
Odczyt danych z pliku - tekst rodzielony znakami TAB
» 2017-07-27 18:33:14
Witam,

Putanie od nowicjusza (VC++): problemem jest poprawny odczyt danych z pliku testowego, składającego się z trzech kolumn rodzielonych znakiem tabulacji:

Plik testowy ma postać:
0100 [TAB] 0200 [TAB] Test_One
0300 [TAB] 0400 [TAB] Test Two
0500 [TAB] 0500 [TAB] The Third Test

Efekt jest taki jak na załączonym obrazku, tj. znaki spacji w text3 traktowane są jak koniec linii.
W rezultacie do tablicy wrzucane są stringi: Test_One, Test, The:
biały - uzyskane efekt;
czerwony - efekt oczekiwany;

C/C++
vector < string > x_array, y_array, z_array;

string infile = "C:\\...";

ifstream file( infile );
string line;

while( getline( file, line ) )
{
    stringstream linestream( line );
    string val1, val2, val3;
   
    getline( linestream, val1, '\t' );
   
    linestream >> val2 >> val3;
   
    x_array.push_back( val1 );
    y_array.push_back( val2 );
    z_array.push_back( val3 );
}

Jakieś sugestie?
P-163633
pekfos
» 2017-07-27 18:38:28
C/C++
getline( linestream, val1, '\t' );

linestream >> val2 >> val3;
Wczytaj wszystkie 3 wartości takim getlinem.
P-163634
maly7
» 2017-07-27 18:45:21
Tak jak powyżej, dwie pierwsze wartości wczytaj do spacji, ostatnią do końca linii:
C/C++
getline( linestream, val1, ' ' );
getline( linestream, val2, ' ' );
getline( linestream, val3, '\n' );
P-163638
pekfos
» 2017-07-27 18:47:31
dwie pierwsze wartości wczytaj do spacji, ostatnią do końca linii:
Temat mówi o polach rozdzielanych znakami tabulacji, więc ten kod nie zadziała poprawnie.
P-163640
PL_Andrev
Temat założony przez niniejszego użytkownika
» 2017-07-27 18:58:01
Niemożliwe że było to aż tak proste.
Dzięki!
P-163641
« 1 »
  Strona 1 z 1