我正在构建一个C++ CSV数据解析器.我正在尝试访问文件的第一列和第十五列,并使用getline命令将它们读入两个数组.例如:
for(int j=0;j<i;j++)
{
getline(posts2,postIDs[j],',');
for(int k=0;k<14;k++)
{
getline(posts2,tossout,',');
}
getline(posts2,answerIDs[j],',');
getline(posts2,tossout,'\r');
Run Code Online (Sandbox Code Playgroud)
但是,第一列和第十五列之间是一个引号括起来的列,包含各种逗号和宽松的引号.例如:
......,"abc,defghijk."Lmnopqrs,"tuv","wxyz.",... <
避免这一列的最佳方法是什么?我无法对它进行深入研究,因为它内部有引号和逗号.跑进报价之后,我应该逐个阅读引用的垃圾,直到找到", 依次?
此外,我已经看到了其他解决方案,但它们都是Windows/Visual Studio独有的.我正在运行Mac OSX ver.10.8.3与Xcode 3.2.3.
提前致谢!德鲁
我正在尝试编写一个程序来解析CSV文件的第一列和第十六列(转换为.txt).我在包含可执行文件的文件夹中有CSV("posts.txt")文档.但是,每当我尝试运行可执行文件时,我的程序都会传递它无法打开文件(或"!infile.is_open()").介意给我一些帮助?我在Mac OSX 10.8.3上运行Xcode 3.2.3.代码如下所示.
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string.h>
using namespace std;
void answeredPostGrabber()
{
ifstream inFile("posts.txt");
string postNumber;
string answerNumber;
string throwAway;
if(inFile.is_open())
{
while(inFile.good())
{
getline(inFile,postNumber,',');
cout << postNumber << ",";
for(int y=1;y++;y<16)
{
getline(inFile,throwAway,',');
}
getline(inFile,answerNumber,',');
cout << answerNumber << endl;
ofstream edges;
edges.open("edges.txt",ios::app);
edges << postNumber << "," << answerNumber<< endl;
edges.close();
ofstream nodes;
nodes.open("nodes.txt",ios::app);
nodes << postNumber << "\n" << answerNumber << endl;
nodes.close();
getline(inFile,throwAway);
}
}else cout << "ERROR: Unable to …Run Code Online (Sandbox Code Playgroud)