现在我已经了解到cin.getline
就像这样。
cin.getline(dest string, number of charecters to put into string);
所以假设这个程序。
char s1[8]="Hellopo";
cin.getline(s1,5);
cout<<s1<<endl;
这是输入:hhhhhhhhhhhhh
这是节目输出:hhhh
我对此计划有两个顾虑。
1-)我将程序设置为从用户输入的内容中获取5个字符并存储在s1中。当我运行该程序时,它只打印出4个字符。
2-)此外,我希望程序在打印出用户的内容之后继续打印剩余的s1。但它在hhhh
请向我解释我的两个问题。谢谢
答案 0 :(得分:7)
std::cin::getline将存储四个字符加上一个空终止(总共五个字符)。 std::cout
将在它找到的第一个空终止符处停止打印。
答案 1 :(得分:3)
已提取count-1个字符(在这种情况下执行setstate(failbit))。
这意味着如果您指定5
,则只会读取4
个字符。和
...然后它将空字符CharT()存储到数组的下一个连续位置
所以在第四个字符后面会插入一个空字符。因此数组s
将包含内容:
'h' == s[0]
'h' == s[1]
'h' == s[2]
'h' == s[3]
0 == s[4]
operator<<
将在找到第一个空字符时停止打印char*
。
答案 2 :(得分:2)
第五个字符是0终结符。 getline(buffer,n)
存储最多n
字节,包括缓冲区中的0终止符。然后cout << s1;
在0终结符处停止。
答案 3 :(得分:1)
第五个字符是空终止符,它标记字符串的结尾。