我在处理必须制作的控制台应用程序时遇到了问题。问题是我有一个 void 函数,我在其中使用 cin.getline
来自 <iostream>
和 <cstring>
.
我的字符串定义如下:char str[50];
每次我输入超过 50 个符号时,我都会进入无限循环,基本上我的程序会崩溃。
你们能想到一个函数来忽略超过限制(在本例中为 50)的所有内容,这样我的程序就不会崩溃吗?忽略,我的意思是当我输入 50 多个符号时,程序会说:
max 50 symbols, please input again:
最佳答案
getline的二次签名
istream& getline (char* s, streamsize n, char delim );
可能是您所追求的。 streamsize n
参数就是您要找的。 This documentation可能有帮助。不要忘记检查故障位。
正如其他人所提到的,使用 std::string 是一个更好的解决方案,但我会给你带来疑问的好处,并假设你有分配静态 c 风格字符缓冲区的理由。
关于c++ - 限制一个str[n]的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36970132/