对于运行时给定的整数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个字符串。这是为什么? 如果这是错的,在这种情况下我该如何接受输入?
答案 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]
中。
那么,问题就解决了。