c ++非常新,我有以下代码:
char input[3];
cout << "Enter input: ";
cin.getline(input,sizeof(input));
cout << input;
输入abc
之类的内容只会输出ab
,将其缩短一个字符。定义的长度是3个字符,为什么它只捕获2个字符?
答案 0 :(得分:4)
请记住,c-strings为空终止。要存储3个字符,由于null终止符,您需要为4分配空间。
同样在c ++的评论中提到的@MikeSeymour最好完全避免这个问题并使用std :: string。
答案 1 :(得分:3)
你可以感谢你最喜欢的神,这个故障保护装置,大多数功能都不是那种。
在C中,字符串以空值终止,这意味着它们需要一个额外的字符而不是实际数据来标记字符串实际结束的位置。
既然你正在使用C ++,你应该避免使用简单的char数组。一些原因:
string
比普通的旧数组更难。 string
具有强大的复制语义,几乎涵盖了您能想到的任何内容。