5 1256 4323 7687 3244 5678
2 2334 7687
5 2334 5678 6547 9766 9543
我应该在上面的表格中输入。每行中的第一个整数决定后面的整数个数。由于第一个整数可以变化,我不知道'scanf'是否可能。
5 1256 4323 7687 3244 5678
2 2334 7687
5 2334 5678 6547 9766 9543
我应该在上面的表格中输入。每行中的第一个整数决定后面的整数个数。由于第一个整数可以变化,我不知道'scanf'是否可能。
当然,您可以scanf
按照以下方式进行操作。
while (scanf("%d", &n) == 1) {
row++;
for (col = 0; col < n; col++)
scanf("%d", &a[row][col]);
}
这与以下内容大致相同cin
:
while (cin >> n) {
row++;
for (col = 0; col < n; col++)
cin >> a[row][col];
}
一个更具体的例子,假设输入是最大N
行数。
int** a = new int*[N];
int row = -1; // not started yet
while (cin >> n) {
row++;
a[row] = new int[n];
for (int col = 0; col < n; col++)
cin >> a[row][col];
}
如果N
事先不知道,我们也可以std::vector
如下使用。
vector<vector<int> > a;
while (cin >> n) {
vector<int> line(n);
for (int col = 0; col < n; col++)
cin >> line[col];
a.push_back(line);
}
我永远不会明白你为什么不想在 Stackoverflow.com 上搜索!它被回答了很多次。例如 -
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
int main()
{
std::ifstream data("test.txt");
std::string line;
while(std::getline(data,line))
{
std::stringstream lineStream(line);
std::string cell;
while(std::getline(lineStream,cell,' '))
{
std::cout<<cell<<std::endl;
}
}
}