Для упрощения я пытаюсь прочитать содержимое CSV-файла, используя класс ifstream и его функцию-член getline ().Вот этот CSV-файл:
1,2,3
4,5,6
И код:
#include <iostream>
#include <typeinfo>
#include <fstream>
using namespace std;
int main() {
char csvLoc[] = "/the_CSV_file_localization/";
ifstream csvFile;
csvFile.open(csvLoc, ifstream::in);
char pStock[5]; //we use a 5-char array just to get rid of unexpected
//size problems, even though each number is of size 1
int i =1; //this will be helpful for the diagnostic
while(csvFile.eof() == 0) {
csvFile.getline(pStock,5,',');
cout << "Iteration number " << i << endl;
cout << *pStock<<endl;
i++;
}
return 0;
}
Я ожидаю, что все числа будут прочитаны, так как getline предполагает взять то, что написано споследнее чтение и прекратить при обнаружении ',' или '\ n'.
Но, похоже, все хорошо читается, кроме «4», то есть первого числа второй строки (см. console):
Iteration number 1
1
Iteration number 2
2
Iteration number 3
3
Iteration number 4
5
Iteration number 5
6
Таким образом, мой вопрос: что делает это '4' после (я полагаю) настолько специфическим '\ n', что getline даже не пытается принять это во внимание?
(Спасибо!)