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);
}
謝謝。 在哪裏初始化「行」? 'cin'表單是否需要空格分隔的輸入? –
@HarishVishwakarma當然。 'cin'輸入由空格隔開的輸入,包括行尾。 –
@HarishVishwakarma此外,我用更具體的例子更新了我的答案。 –
我永遠不會得到你爲什麼不想在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;
}
}
}
'scanf'是一個C函數 - 如果這是一個C++程序,那麼你可能想使用C++ I/O習語。 –
爲什麼要使用'scanf'而不是'std :: cin'? –
我並不侷限於'scanf'。我提到它,因爲我用它來分隔空白的輸入。但是由於每條生產線的輸入數量不同,我不知道該怎麼做。 –