限制一个str [n]的输入

时间:2016-05-01 18:08:07

标签: c++ string input

我无法使用我必须制作的控制台应用程序。问题是我有一个void函数,我使用cin.getline<iostream>中的<cstring>

我的字符串定义如下:char str[50];每当我输入超过50个符号时,我会进入无限循环,基本上我的程序崩溃。

任何人都可以想到一个忽略超出限制的所有功能的功能(在本例中为50),这样我的程序就不会崩溃。忽略,我的意思是当我输入50多个符号时,程序会说:

  

最多50个符号,请再次输入:

3 个答案:

答案 0 :(得分:1)

只需使用std::getline代替istream.getlinestd::getline与std :: string一起使用,不需要预先分配的缓冲区。

如果您需要50个字符串限制,只需在将整行读入字符串后检查字符串大小。

答案 1 :(得分:1)

getline的第二个签名

istream& getline (char* s, streamsize n, char delim );

很可能是你追求的。 streamsize n参数是您正在寻找的参数。 This documentation可能有所帮助。不要忘记检查故障位。

正如其他人所提到的,使用std :: string是一个更好的解决方案,但我会给你带来疑问的好处,并假设你有理由分配一个静态的c风格的char缓冲区。

答案 2 :(得分:1)

您可以使用有限的cin.getline(char* s, int maxsize) 如果达到输入字符的maxsize限制,则返回getline。

请参阅http://www.cplusplus.com/reference/istream/istream/getline/