如果用户输入的字符过多,则创建错误消息
Creating an error message if user inputs too many characters
我对编码很陌生,所以如果这是微不足道的,我深表歉意。当用户输入的字符数超过我的const int SIZE2
数组(即 20 个字符(时,我应该创建一条错误消息。 我的数组称为major
:
>cout << "Enter your major: " << endl << endl;
>48 cin.width(SIZE2);
>49 cin.get(major,SIZE2, 'n');
>50 majorLength = strlen(major);
>51
>52 if(majorLength > SIZE2)
>53 {
>54 cout << "Too many characters, Enter major again: " << endl;
>55 cin.get(major, SIZE2, 'n');
>56 cin.ignore(100, 'n');
>57
>58 }
它编译得很好,但跳过了我的 if 语句。
iostream.get()
(此处调用为cin.get()
(读取确切数量的字节,然后结束。在您的情况下,它特别不会将超过SIZE2
个字节读取到major
中;因此,if(majorLength > SIZE2)
永远是错误的。此外,如果输入的字节过多,major
将只有前 20 个字节 - 其余的将被截断。(FWIW,您的代码现在只匹配 19 个字符。
请注意,您可能不应该尝试这样做 - 在读取流之前检查流的长度实际上没有一种好方法,如果您决定只读取所有内容然后检查其大小,您将面临溢出缓冲区的风险 - 假设它是固定大小。
但是,您可以在读取后确定缓冲区是否为空。要确定缓冲区中是否还有超出SIZE2
的输入,您可以使用std::cin.get()
捕获一个字符,然后检查该字符。如果字符n
,则表示缓冲区中没有更多的输入;如果不是,则意味着字符缓冲区中的输入过多。如果输入完全为空,这也将触发。
#include <iostream>
int main () {
int SIZE2 = 20;
char str[SIZE2];
char c;
std::cin.get (str, SIZE2+1); // get c-string of 20 chars
std::cin.get(c); //get last buffer character
if(c != 'n') {
std::cout << "bad input!" << std::endl;
}
std::cout << str << std::endl;
return 0;
}
演示
相关文章:
- C++使用params创建线程函数会导致转换错误
- 为什么加载SDF会导致Mobilizer创建闭环错误
- 此代码编译良好,但文件未创建?请指出错误
- 对象创建错误的C++矢量
- 如果用户输入的字符过多,则创建错误消息
- 本机库中的 OpenCV 创建错误
- #include "date.h" 创建错误 E1696 无法打开源文件"date.h",也无法打开包含文件:没有这样的文件或目录
- 使用makeword函数创建错误e0109-表观呼叫的括号前表达式必须具有(指针到 - )函数类型
- piThread在调用函数后创建错误
- CMAKE GCOV C 创建错误的.gcno文件
- 关于 C++ 中的头文件创建错误
- 窗口创建错误 - 可能是事件处理
- 氧气创建错误
- Xcode typedef 的 struct 创建错误/警告
- pthread 在分离的线程上创建错误 11
- 为什么代码创建错误的二进制搜索树
- 有人建议我的代码为什么在basic_ios和sstream中创建错误
- JNA -结构创建错误
- pthread在c++中创建错误
- 对象创建错误