【发布时间】:2012-10-21 03:39:36
【问题描述】:
这是我从 .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;
}
【问题讨论】:
-
循环读取?例如。
while (file.getline(...)) -
你应该清理你的格式,那些空格真的很糟糕。此外,这是一个说英语的网站,所以 cmets 对法语的任何人都没有用。
-
对不起,所有法国人的事情,不会再发生了!
-
还有可怕的空间......