我有一个包含许多行的文本文件,如下所示:
数据[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
但似乎很难完成这项具体任务。 是否有任何实用程序/更好的方法可以帮助我这样做?
答案 0 :(得分:1)
我建议你看看boost::tokenizer,这是我找到的最佳方法。你会在网上找到几个例子。还要看看这个high-score question。
步骤:每行:
:
字符=
字符分隔值,并将其填入std::vector<std::string>
最后一部分可能是:
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任何麻烦,你可以调整它,添加更多的健全性检查(例如,该值是数字,所有行中的字段是一致的),但上面的基本解析是一个开始。