Для упрощения я пытаюсь прочитать содержимое 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', т.е. первого числа второй строки (ср. консоль):
Iteration number 1
1
Iteration number 2
2
Iteration number 3
3
Iteration number 4
5
Iteration number 5
6
Таким образом, мой вопрос: что делает это «4» после (я думаю) «\ n» настолько конкретным, что getline даже не пытается его учитывать?
(Спасибо !)