小编Dre*_*man的帖子

C++ CSV解析引号内的逗号

我正在构建一个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.

提前致谢!德鲁

c++ csv parsing

3
推荐指数
1
解决办法
3706
查看次数

尽管一切似乎都存在,但是ifstream文件没有打开(c ++)

我正在尝试编写一个程序来解析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)

c++ file ifstream

1
推荐指数
1
解决办法
8358
查看次数

标签 统计

c++ ×2

csv ×1

file ×1

ifstream ×1

parsing ×1