获取控制台中的输入大小

时间:2011-02-04 08:37:57

标签: c++

如何获得控制台的大小输入字符串或缓冲区中有效字符的大小?

char buffer[100];
cin >> buffer;

我希望将'\ 0'放在输入结束处。

3 个答案:

答案 0 :(得分:6)

首选使用std::string,而不是char*char[]。这让事情变得简单! char buffer[100]的问题是,如果输入字符串的大小超过100,那么您的cin >> buffer将调用未定义的行为,因为它会尝试编写以外的内容数组。如果您使用std::string

,则可以轻松避免此问题
std::string input;
cin >> input; //this can read string of any unknown size!
cout << "length of input string : " << input.size()<< endl;

您也可以使用input.length()代替input.size()。它们返回相同的值。

在线演示:http://www.ideone.com/Wdo31

答案 1 :(得分:2)

你不需要(很可能,不可能)。相反,请使用std::string而不是char缓冲区。

答案 2 :(得分:2)

这个问题没有实际意义。当用户键入超过100个字符时,您有缓冲区溢出。你可能会崩溃。如果没有,你最多会遇到安全问题。你不应该这样做。一次读取一个字符的输入,或使用更安全的字符串库。如果你的平台支持gets_s,那么我会想到它。

但是在回答你的问题时,这可能就是你所需要的:

char buffer[100] = {}; // zero-init the entire array
int length = 0;
cin >> buffer;
length = strlen(buffer); // length is the length of the string