Hej, mam taki o to problem:
mam plik w formacie CSV. W pierwszej linijce zapisałem w nim ile będzie wierszy a ile kolumn pozostałych zmiennych (w kolejnych linijkach). Obecnie są to liczby 5 i 6.
Problem jest taki, że program wczytuje albo 2 razy 5 albo 5 i jakąś liczbę z kosmosu albo chyba jeszcze jakoś inaczej.
Dziwne jest również to, że jak wyświetlę pierwszą linijkę z pliku, którą pobrałem funkcją getline to zamiast pokazać 5;6 to pokazuje " ;6" - czyli spacja, średnik i 6.
Kod, który tak robi jest poniżej:
int _tmain(int argc, _TCHAR* argv[])
{
cout << "start " << endl;
string file_var_name = "plik_z_danymi.csv";
//-------
ifstream file;
file.open(file_var_name);
string line;
string var;
int row_number;
int column_number;
istringstream stream_row; //strumień dla wiersza
istringstream stream_var; //strumień dla zmiennej
getline(file, line);
cout << line << endl; //<- tutaj pokazuje "_;6", gdzie "_" to spacja
stream_row.str(line);
getline(stream_row, var, ';'); //wydobywamy pierwszą zmienną
stream_var.str(var); //tworzymy strumień dla zmiennej
stream_var >> row_number; //wprowadzamy do zmiennej wartość ze strumienia
//stream_var.clear();
getline(stream_row, var, ';');
stream_var.str(var);
stream_var >> column_number;
stream_var.clear();
cout << "row_number = " << row_number << " column_number = " << column_number << endl;
//wynik: row_number = 5 column_number = -858993460
cout << "------- KONIEC PROGRAMU -------" << endl;
getchar();
return 0;
}
Czy mógłbym kogoś prosić o pomoc w wyjaśnieniu co jest nie tak?
Z góry bardzo dziękuję za każdą pomoc!