2d数组,输入中如何接受空格?在1d数组中,我认为正确的代码是cin.getline(array,5)
,但在2d数组中,我无法弄清楚什么是正确的参数。
这是我的代码
#include<iostream>
void display();
char array[2][5];
using namespace std;
int main(){
for (int x = 0; x < 2; ++x) {
for (int y = 0; y < 5; ++y) {
display();
cout << "Enter a value: ";
cin>>array[x][y]; //i want to accept space in input. cin.getline(array[x][y],?)
system("cls");
}
}
display();
}
void display(){
for(int x = 0; x<2; x++){
for(int y = 0; y<5; y++){
cout<<" " <<array[x][y] <<" ";
}
cout<<endl;
}
}
最后,如何限制cin&gt;&gt;中的输入?例如,它只允许1个字符输入。 ty提前
答案 0 :(得分:2)
如何接受输入中的空格?
问题在于你的逻辑。您试图将string
或char*
简单地存储到char中。即使它是一个2D阵列,它也不会像那样工作。您需要char*
或std::string
,如下所示。
#include<iostream>
using namespace std;
void display();
string array[2][5];
int main()
{
for (int x = 0; x < 2; ++x)
{
for (int y = 0; y < 5; ++y)
{
display();
cout << "Enter a value for ["<<x+1<<"]["<<y+1<<"]: ";
std::getline(std::cin, array[x][y]);
system("cls");
}
}
display();
}
void display()
{
for(int x = 0; x<2; x++)
{
for(int y = 0; y<5; y++)
cout<<" " <<array[x][y] <<" ";
cout<<endl;
}
}
希望是这样,有任何疑问,只要问。
答案 1 :(得分:0)
#include<iostream>
void display();
char array[2][5];
using namespace std;
int main() {
for (int x = 0; x < 2; ++x) {
for (int y = 0; y < 5; ++y) {
display();
cout << "Enter a value: ";
cin>>array[x][y];
if(array[x][y]==" ";
break;
system("cls");
}
}
display();
}
void display() {
for(int x = 0; x<2; x++) {
for(int y = 0; y<5; y++) {
cout<<" " <<array[x][y] <<" ";
}
cout<<endl;
}
}