cin.getline()不添加\ 0到阵列C++
问题描述:
我有一个代码线的端部如下:cin.getline()不添加 0到阵列C++
const int maxtext=1000;
char text[maxtext];
cin.getline(text,maxtext);
然后,当我试图看到
sizeof(text)
它显示我maxtext,而不是输入的长度。
我做错了什么?
PD .:我不能使用< string> library的函数。
答
sizeof(text)
不检查的text
含量(它返回该尺寸中的对象的字节,见sizeof),所以无论是否空终止字符存在于text
是无关紧要的。改为使用strlen(text)
。确保text
已使用text
之前被填充:
if (cin.getline(text, maxtext))
{
}
有可能通过使用以避免硬编码一个固定大小的读入std::getline()
与std::string
:
std::string text;
if (std::getline(std::cin, text))
{
}
你能告诉'文字的声明'和'maxtext'? – 2013-04-09 14:10:03
使用'strlen(文本)'。 – hmjd 2013-04-09 14:10:54
@sftrabbit编辑它,所以它更清晰一点。 – Zasito 2013-04-09 14:12:48