2d数组如何在输入中允许空格?

时间:2018-03-22 16:05:08

标签: c++

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提前

2 个答案:

答案 0 :(得分:2)

如何接受输入中的空格?

问题在于你的逻辑。您试图将stringchar*简单地存储到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;
    }
}