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