c++ - 限制一个str[n]的输入

标签 c++ string input

我在处理必须制作的控制台应用程序时遇到了问题。问题是我有一个 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/

相关文章:

c++ - 为什么 C++ 不允许参数是默认参数?

c++ - memcpy 不复制任何东西吗?

C++ 返回 stringstream.str()

java - 无法在原始类型 int 上调用 toString()

javascript - 你能像 String.fromCharCode 一样使用 String.fromCodePoint 吗

python - 强制 setup.py 使用我的自定义编译器

javascript - 如何使用正则表达式匹配多个值返回单个值?

string - 压缩特里实现?

linux dup2 似乎不适用于管道?

go - 如何向 Scan 语句添加提示?