Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 在c+中输入多个带空格的字符串+;在2d字符数组中_C++11 - Fatal编程技术网

C++11 在c+中输入多个带空格的字符串+;在2d字符数组中

C++11 在c+中输入多个带空格的字符串+;在2d字符数组中,c++11,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] = ne

对于运行时给定的整数
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)
 }
int n,列=1000;//字符串的最大大小=1000
cin>>n;
字符**字符串=0;
字符串=新字符*[n];
int i;
对于(i=0;i
在第二个字符串,即“abcd”之后,它将换行符作为第三个字符串。为什么呢?
如果这是错误的,在这种情况下我如何获取输入?

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

假设我执行这个程序,输入n=2,也就是说,我想输入两个字符串。如果在键入2后,我按enter键,则进入
Strings
的第一个字符串为空字符串。但是,如果我在2后面键入我想首先输入的字符串(2后面没有空格),那么我的问题就解决了

如果我不想改变我希望输入的方式(即,我希望在输入我想要输入的字符串数量后按enter键,然后输入即将出现的字符串),那么我可以做的是,在上述代码中的以下循环之前写入
cin.getline(String[0],1000)

for (i = 0; i < n; i++)               
    cin.getline(String[i],1000)
(i=0;i cin.getline(字符串[i],1000) 有一次,我们将2(2,作为输入n,参考上述答案中的详细信息)后的空格作为
字符串中的第一个输入字符串,但随后的循环开始重新输入,并且在下一行的终端上的输入字符串(我们实际打算输入的第一个字符串),保存在
字符串[0]
中。
因此,问题就解决了。

是否用换行符终止最后一行?@MalcolmMcLean在第二个字符串之后,它将换行符作为第三个字符串。为什么?谢谢!我明白了。我只是想了解一下,如果我使用cin运算符进行输入,会不会发生同样的情况?不,这不会发生在
cin>>input\u变量中。我看到的是,cin接受由空格分隔的输入(可以是空格、制表符或新行)。假设您有3个连续的cin input语句。在终端上提供输入时,我们可以将三个值(我们想要输入的)放在一行中,每个值之间有制表符或空格,也可以在终端上写入的每个输入值之后按enter键。