2013-04-09 64 views
0

我有一个代码线的端部如下:cin.getline()不添加 0到阵列C++

const int maxtext=1000; 
char text[maxtext]; 

cin.getline(text,maxtext); 

然后,当我试图看到

sizeof(text) 

它显示我maxtext,而不是输入的长度。

我做错了什么?

PD .:我不能使用< string> library的函数。

+0

你能告诉'文字的声明'和'maxtext'? – 2013-04-09 14:10:03

+3

使用'strlen(文本)'。 – hmjd 2013-04-09 14:10:54

+0

@sftrabbit编辑它,所以它更清晰一点。 – Zasito 2013-04-09 14:12:48

回答

4

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)) 
{ 
}