2013-04-09 31 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)) 
{ 
}