这是我从 .csv 文件中获取的代码,它让 itch 女巫在分隔符之间,并给出这些分隔符的位置。但这确实使它仅适用于第一行,例如如何继续第二行?
#include <tchar.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
//#include <limits>
using namespace std;
#define TAILLE_MAX_LIGNE 1203
int _tmain(int argc, _TCHAR* argv[])
{
char stringFile [TAILLE_MAX_LIGNE];
string stringLineToAnalyse;
size_t positionCharOld, positionCharNew;
string separateurChar = ";";
string contenuLocalChamp = "";
vector <string> localStringVector;
localStringVector.clear(); // Initialisation du vecteur // VECTOR INTIALISE
ifstream file;
file.open("C:/Users/Alex/Desktop/STAGE/test.csv");
if(file.is_open())
{
file.getline(stringFile, TAILLE_MAX_LIGNE);
// file.ignore(numeric_limits<streamsize>max(),'\n'));
stringLineToAnalyse = stringFile;
cout << "tout va bien" << endl;
cout << stringLineToAnalyse << endl;
// initialisation de la recherche dans la ligne
// INITIALISE SEARCH INTO THE LIGNE
positionCharOld = 0;
bool finDelaBoucle = false;
while(finDelaBoucle == false)
{
// boucle itérative
positionCharNew = stringLineToAnalyse.find(separateurChar, positionCharOld);
if(positionCharNew != string::npos)
{
cout << "separateur trouve a la position " << positionCharNew << endl; // SEPARATOR POSITION
if((positionCharNew-positionCharOld) > 0)
{
contenuLocalChamp = stringLineToAnalyse.substr(positionCharOld, positionCharNew-positionCharOld);
cout << "le contenu de la string entre separateur est " << contenuLocalChamp << endl; // CONTENT BEATWEEN 2 SEPARATOR
localStringVector.push_back(contenuLocalChamp);
}
else
{
cout << "ce champ vide" << endl; // EMPTY FIELD
}
positionCharOld = positionCharNew+1;
}
else
{
finDelaBoucle = true;
system("PAUSE");
cout << "fin de la boucle" << endl; // END OF THE LOOP
system("PAUSE");
}
}
}
else
{
cout << "pas de fichier" << endl;
system("PAUSE");
}
return 0;
}