gpt4 book ai didi

c++ - 如何在 C++ 中解析具有不同字段数的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:06:27 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据:

AAA 0.3 1.00 foo chr1,100
AAC 0.1 2.00 bar chr2,33
AAT 3.3 2.11 chr3,45
AAG 1.3 3.11 qux chr1,88
ACA 2.3 1.33 chr8,13
ACT 2.3 7.00 bux chr5,122

请注意,上面的行是用制表符分隔的。而且,它有时可能包含 5 个字段或 4 个字段。

我想要做的是将变量中的第 4 个字段捕获为“”(如果它不包含任何值)。

我有以下代码,但它以某种方式读取第 5 个字段,作为第 4 个字段当第 4 个为空时。

正确的做法是什么?

#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
using namespace std;

int main ( int arg_count, char *arg_vec[] ) {
string line;
ifstream myfile (arg_vec[1]);

if (myfile.is_open())
{
while (getline(myfile,line) )
{
stringstream ss(line);
string Tag;
double Val1;
double Val2;
double Field4;
double Field5;

ss >> Tag >> Val1 >> Val2 >> Field4 >> Field5;
cout << Field4 << endl;
//cout << Tag << "," << Val1 << "," << Val2 << "," << Field4 << "," << Field5 << endl;

}
myfile.close();
}
else { cout << "Unable to open file"; }
return 0;
}

最佳答案

将行标记为字符串 vector ,然后根据标记的数量转换为适当的数据类型。

如果可以使用Boost.Spirit ,这简化为定义适当语法的简单问题。

关于c++ - 如何在 C++ 中解析具有不同字段数的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/743191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com