在2d char数组中用c ++中的空格输入多个字符串

时间:2017-06-12 18:47:13

标签: c++11

对于运行时给定的整数n,我必须输入n个字符串,它们之间可以有空格。

输入的测试用例格式为:

3
xyz b
abcd
defg

所以我正在接受这样的输入,因为cin会跳过空格。

int n, column = 1000;// maximum size of strings=1000
cin >> n;   
char **String = 0;
String = new char *[n];
int i;
for (i=0; i < n; i++){
    String[i] = new char [column];
     }

for (i = 0; i < n; i++)               
 cin.getline(String[i],1000)
 }

在第二个字符串之后,即&#34; abcd&#34;它将换行作为第3个字符串。这是为什么? 如果这是错的,在这种情况下我该如何接受输入?

1 个答案:

答案 0 :(得分:0)

您的代码是正确的。问题在于终端给出输入的方式。

假设我执行程序,并且我输入n = 2,即我希望输入两个字符串。如果输入2后按Enter键,则进入Strings的第一个字符串为空字符串。但是,如果我输入字符串,我打算首先输入,在2之后(2之后没有空格),那么我的问题就解决了。

如果我不想改变我想输入的方式怎么办(即我想在输入我想要输入的字符串数后输入,然后输入即将到来的字符串),那么我能做什么在上面的代码中,在以下循环之前写cin.getline(String[0], 1000)

for (i = 0; i < n; i++)               
    cin.getline(String[i],1000)

一旦我们将2之后的空格(2,作为输入n,参考本答案中的上述细节)作为String中的第一个输入字符串,但后面的循环开始重新输入,以及下一行(我们实际打算输入的第一行)终端后面的输入字符串保存在String[0]中。 那么,问题就解决了。