在C ++中将文本转换为csv文件?

时间:2014-06-18 06:50:01

标签: c++ csv

我有一个包含许多行的文本文件,如下所示:

数据[0]:a = 123 b = 234 c = 3456 d = 4567 e = 123.45 f = 234.56

我正在尝试提取数字,以便将其转换为csv文件,以便让excel导入并识别

我的逻辑是,找到“”字符,然后将数据删除。例如,先切断 “”和第二个“”。它可行吗?我一直在努力,但我没有成功。

其实我想创建一个像

这样的csv文件

a,b,c,d,e,f

123,234,3 3456 .... blablabla

234,345,4567 .... blablabla

但似乎很难完成这项具体任务。 是否有任何实用程序/更好的方法可以帮助我这样做?

2 个答案:

答案 0 :(得分:1)

我建议你看看boost::tokenizer,这是我找到的最佳方法。你会在网上找到几个例子。还要看看这个high-score question

步骤:每行:

  1. 使用:字符
  2. 将字符串分为两部分
  3. 使用空格字符
  4. 将右侧部分切割成多个字符串
  5. 使用=字符分隔值,并将其填入std::vector<std::string>
  6. 将这些值放在一个文件中。
  7. 最后一部分可能是:

    std::ofstream f( "myfile.csv" );
    for( const auto& s: vstrings )
        f << s << ',';
    f << "\n";
    

答案 1 :(得分:1)

没有非标准库的简单方法是:

std::string line;
while (getline(input_stream, line))
{
    std::istringstream iss(line);

    std::string word;
    if (is >> word)   // throw away "data[n]:"
    {
        std::string identifier;
        std::string value;
        while (getline(iss, identifier, '=') && is >> value)
            std::cout << value << ",";
        std::cout << '\n';
    }
}

如果训练逗号导致excel任何麻烦,你可以调整它,添加更多的健全性检查(例如,该值是数字,所有行中的字段是一致的),但上面的基本解析是一个开始。