file.txt
13 14 15
10 17 152
1 34 56
string line;
ifstream infile("file.txt");
vector<vector<char> > num;
while (getline(infile, line)) {
vector<char> row;
for (char &c : line) {
if (c != ' ') {
row.push_back(c);
}
}
num.push_back(row);
}
for (vector<char> &row : num) {
for (char &c : row) {
cout << c << ' ';
}
std::cout << '\n';
}
我是C ++的新手,我想要一些有关如何读取3x3数组并将其以与文本文件相同的格式存储到2d向量中的帮助吗?我当前的输出如下所示:
1 3 1 4 1 5
1 0 1 7 1 5 2
1 3 4 5 6
预期产量:
13 14 15
10 17 152
1 34 56
假设您确实要存储文件中的数字,而不是字符,我建议您将每一行都放在an中,std::istringstream
并使用它来解析通常要从std::cin
中读取的数字,例如当您要读取纯int
值时。
也许是这样的:
std::vector<std::vector<int> > num;
std::string line;
while (std::getline(infile, line))
{
std::vector<int> values;
std::istringstream iss(line);
int value;
while (iss >> value)
{
values.push_back(value);
}
num.push_back(values);
}
使用编写此答案时所示的输入文件,我们现在应该有一个3x3的整数“矩阵”。
如果我们输出它:
for (auto const& row : num)
{
for (auto value : row)
{
std::cout << value << ' ';
}
std::cout << '\n';
}
然后我们应该得到输出:
13 14 15 10 17 152 1 34 56
while
如果使用std::istream_iterator
以下方法,则可以避免内部循环:
std::vector<std::vector<int> > num;
std::string line;
while (std::getline(infile, line))
{
std::istringstream iss(line);
std::vector<int> values(std::istream_iterator<int>(iss),
std::istream_iterator<int>());
num.push_back(values);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句