getline行尾?

时间:2011-06-29 18:42:38

标签: c++

我有一个包含n列和y行二进制值的文本文件。

我使用getline提取二进制值的每一行并将它们分配给向量:
我使用getline来提取文件的每一行,其中每一行由一系列由空格分隔的'0'或'1'组成,并将它们分配给一个向量。

std::vector< std::vector<int> > matrix; // to hold everything.
std::string line;
while(std::getline(file,line))
{
  std::stringstream linestream(line);
  int  a,b,c,d;
  linestream >> a >> sep >> b >> sep >> c >> sep >> d;
  std::vector <int> vi;
  vi.push_back(a);
  vi.push_back(b);
  vi.push_back(c);
  vi.push_back(d);
  matrix.push_back(vi);
}

现在问题是我事先并不知道文件中有多少列。我怎样才能遍历每一行直到我到达该行的末尾?

3 个答案:

答案 0 :(得分:3)

显而易见的方式是:

while (linestream >> temp >> sep) 
    vi.push_back(temp);

虽然最后一项可能会失败,但分隔符后面可能没有。你有几个选择来妥善处理。一种是典型的“循环半”成语。另一个是将locale视为空格。

当/如果你这样做,你可以/也可以使用标准算法:

std::copy(std::istream_iterator<int>(linestream),
          std::istream_iterator<int>(),
          std::back_inserter(vi));

答案 1 :(得分:0)

为什么不呢         while(in1&gt;&gt; i)row.push_back(i); 哪个不需要分隔符?

答案 2 :(得分:-1)

检查换行符号(\ n)。当你找到一个,你就完成了这一行/列。