我有一个包含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);
}
现在问题是我事先并不知道文件中有多少列。我怎样才能遍历每一行直到我到达该行的末尾?
答案 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)。当你找到一个,你就完成了这一行/列。