c ++从文本文件帮助输入

时间:2009-07-23 03:15:54

标签: c++

我的测试文件包含以下数据:

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);  
}

如何用零分隔它们?

3 个答案:

答案 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()?