为什么第二个角色对第二个变量迷路

Abi*_*nda 3 c++ string char getline

我有2个char类型的变量。

char desc[30];
char code[2];
cout << "Enter values : "<<"\n";
cin.getline(desc,30);
cin.getline(code,2);

cout << "\nValues Entered: "<<"\n";
cout << desc <<"\t";
cout << code <<"\n";
Run Code Online (Sandbox Code Playgroud)

当按如下所示提供输入值时,第二个变量的第二个字符将丢失。我尝试了cin>>markscin.get(marks,2),但是行为始终相同。

输入值:
这是一条测试线
LH

输入的值:
这是测试线L

进程返回0(0x0)执行时间:11.285 s
按任意键继续。

在上面的示例中,即使输入为LH,在输出中也只有'L'可用而'H'丢失了。有人可以告诉我这里有什么问题吗?

Bla*_*aze 7

看一下getline(重点是我的)文档:

写入s的最大字符数(包括终止的null字符)

因此,如果您想读两个符号,则必须输入的大小3

cin.getline(code,3);
Run Code Online (Sandbox Code Playgroud)

将缓冲区大小3也更改为:

char code[3];
Run Code Online (Sandbox Code Playgroud)