cin >> m; cin >> n;
char grid[m][n];
cin >> grid[m][n];
2×2陣列的輸入線我想通過線路輸入字符陣列線,像C++通過線
ABCDE [輸入] FGHIJ [輸入] 。 。 。 等等最後得到mxn矩陣
我該怎麼做到這一點?
cin >> m; cin >> n;
char grid[m][n];
cin >> grid[m][n];
2×2陣列的輸入線我想通過線路輸入字符陣列線,像C++通過線
ABCDE [輸入] FGHIJ [輸入] 。 。 。 等等最後得到mxn矩陣
我該怎麼做到這一點?
只是一個想法:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int main()
{
int m, n;
cin >> m; cin >> n;
vector< vector<char> > grid(n, vector<char>(m,'0'));
cout << "Reading "<< m << "x" << n << " Matrix..." << endl;
flush(cout);
for(int j=0 ; j<n ; j++)
{
for(int i=0 ; i<m ; i++)
{
grid[j][i] = getchar(); // TODO: Check if enter was pressed
}
cout << "Press Enter for next line";
flush(cout);
cin.ignore();
}
cout << "Result is:" << endl;
for(int j=0 ; j<n ; j++)
{
for(int i=0 ; i<m ; i++)
{
cout << grid[j][i];
}
cout << endl;
}
return 0;
}
我也比較喜歡菲利普Kočica字符串的方法,但也許這可以幫助,如果你想有一個定義的N×M大小的矩陣,然後輸入值。不知道這是你在找什麼...
這是我正在尋找的人。非常感謝! –
_「我想逐行輸入char數組」_這是char by char –
由於您使用的是c++,因此無需爲此使用char數組。
您可以結合使用std::string
與std::getline
和一些容器,用於存儲這些字符串(std::vector
,std::deque
,std::queue
...)。在你的情況下,我寧願只是std::vector
。
這種解決方案的巨大好處是,它的方式更容易向使用和不易出錯比純字符數組。 STL容器分配&釋放他們自己的所有資源(RAII)和string
將調整爲輸入數據的大小。
下面是簡單的演示
#include <iostream>
#include <vector>
int main()
{
std::string str;
std::vector<std::string> grid;
// Read strings
while(std::getline(std::cin, str))
{
// Store entered string to vector
grid.push_back(str);
}
// Loop through container
for (std::string& s : grid)
{
// Print strings
std::cout << s << std::endl;
}
return 0;
}
你可以做到這一點是這樣的:
const int m = 5;
const int n = 4;
char grid[m][n];
for(int i(0); i < m; i++){
cin.getline(grid[i], n);
cin.sync();
}
for(int i(0); i < m; i++)
cout << grid[i] << endl;
cin.sync()
在這裏很重要清除輸入緩衝區。
'std :: vector'是你所需要的。不是這種非標準的東西。 –
DeiDei