我的测试文件包含以下数据:
1
2
3
0
1, 2
3, 4
0, 0
4, 3
2, 1
0, 0
我如何逐行分离数据,但也用零分隔每个数据部分。
ifstream data("testData.txt");
string line, a, b;
while(getline(data,line))
{
stringstream str(line);
istringstream ins;
ins.str(line);
ins >> a >> b;
hold.push_back(a);
hold.push_back(b);
}
如何用零分隔它们?
答案 0 :(得分:3)
首先,我会尝试改进问题定义☺
答案 1 :(得分:1)
所以线条很重要,零分隔的数字列表也很重要?尝试这样的事情:
std::ifstream data("testData.txt");
std::vector<int> hold;
std::string line;
std::vector<std::string> lines;
while(std::getline(data,line))
{
lines.push_back(line);
std::stringstream str(line);
// Read an int and the next character as long as there is one
while (str.good())
{
int val;
char c;
str >> val >> c;
if (val == 0)
{
do_something(hold);
hold.clear();
}
else
hold.push_back(val);
}
}
这不是很容错,但它确实有效。它依赖于每个数字后面的单个字符(逗号),除了每行上的最后一个数字。
答案 2 :(得分:0)
当你完成后,你有
[1,2,3,0,1,2,3,4,0,0,4,3,2,1,0,0]
如何使用std :: find()?