gpt4 book ai didi

c++ - getline 行尾?

转载 作者:太空狗 更新时间:2023-10-29 21:50:16 27 4
gpt4 key购买 nike

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

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

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

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

最佳答案

最明显的方法是这样的:

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

虽然这对于最后一项可能会失败,因为它后面可能没有分隔符。你有几个选择来正确处理它。一个是典型的“循环半”成语。另一个是 locale将您的分隔符视为空格。

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

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

关于c++ - getline 行尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525607/

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