我想逐行读取文本文件(每行中没有太多整数)。我想对每一行进行排序,然后将它们放入向量的向量中。问题是我无法将它们逐行插入向量中。我不能让他们停在行尾。这就是我现在所拥有的。谁能帮我吗?
例如,我的文本文件如下:
1 5 3 7 29 17
2 6 9 3 10
3 89 54 67 34
我想要这样的输出:
1: 1 3 5 7 17 29
2: 2 3 6 9 10
3: 3 34 54 67 89
vector<int> v;
vector<vector<int>> G_AL;
if(line!=0){ // Build matrics
string lines;
while (getline(fin, lines)) {
istringstream os(lines);
float temp;
while(os >> temp ) {
if(temp != '\n') {
v.push_back(temp);
sort(v.begin(), v.end());
// get v
}
else
{
}
G_AL.push_back(v);
}
}
}
答案 0 :(得分:0)
尝试一下:
std::stringstream fin("2 1 3\n4 6 5\n10 9 7 8"); // Test data
std::vector<std::vector<int>> G_AL;
std::string lines;
while (getline(fin, lines)) {
std::istringstream os(lines);
std::vector<int> v;
float temp;
while(os >> temp)
v.push_back(temp);
sort(v.begin(), v.end());
G_AL.push_back(v);
}
for (size_t i=0; i<G_AL.size(); ++i)
{
std::cout << i+1 << ": ";
for (auto const & v : G_AL[i])
std::cout << v << " ";
std::cout << std::endl;
}
您提供的代码中存在一些问题:
v
向量在循环外部声明,因此,由于未清除v
,因此值不断累加每一行。在循环内声明它可以解决问题,而不必清除它。v
向量推到G_AL
之后,而不是每行之后。float
与字符(\ n)进行了比较,这是行不通的。实际上,如果没有要读取的浮点值,则行os >> temp
的计算结果将为false,因此无需在流的末尾再次进行测试。