挣扎与cin函数c++
struggling with cin function c++
我试图掌握内置的cin函数,如cin.good() cin.fail() cin.ignore() cin.clear()等,但似乎有以下代码的问题,它工作得很好,但我已经注释的行没有显示在运行时提示符上。有人能给我指个正确的方向吗?:/
void main()
{
int x = 0;
char y = 0;
int ch = 0;
do
{
cout << "Press 1 for int" << endl;
cout << "Press 2 for char" << endl;
cout << "Press 3 for exit" << endl;
cout << "enter choice = ";
cin >> ch;
if (ch == 1)
{
do
{
cout << "Enter an integer only = ";
cin >> x;
if (!cin.good())
{
cout << "Please enter integer only" << endl;
cin.clear();
cin.ignore(INT_MAX, 'n');
}
} while (cin.good() && x != 1);
}
else
if (ch == 2)
{
do
{
cout << "enter char only = ";
cin >> y;
if (cin.fail())
{ //the line below doesn't show up!
cout << "Please enter char only" << endl;
cin.clear();
cin.ignore(INT_MAX, 'n');
}
} while (!cin.fail() && y != 'e');
}
} while (ch != 3);
cout << "End of Program" << endl;
system("PAUSE"); // exit(1);
_getch();
}
cin.good()
如果流遇到诸如读取文件结尾、不存在的文件等问题,则返回0。
cin.bad ()
如果流完全不可用,返回非零值,例如文件无法打开(但如果流只是到达文件的末尾则不返回)。
cin.fail ()
如果最后一个cin命令失败返回true,否则返回false。
一个示例
int main() {
int i, j = 0;
while (1) {
i++;
cin >> j;
if (cin.fail()) return 0;
cout << "Integer " << i << ": " << j << endl;
}
}现在假设您有一个文本文件- input.txt,其内容为:
1 2 3 4 5 sahil 6 7
当你运行上面的短程序时,它会产生如下结果:
整数1:1整数2:2整数3:3整数4:4整数5:5
它不会在读取第5个值后继续,因为它在读取第6个单词后退出,因为它不是整数:cin.fail()成立。
cin.clear()和cin.ignore()
int age;
for (;;) {
cout << "Please enter your age: ";
if (cin >> age) {
break;
} else {
cout << "Please enter a valid integer age" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), 'n');
}
}
在文件处理中使用:
坏()
如果读写操作失败,返回true。例如,在当我们试图写入一个未打开的文件时或者如果我们尝试写入的设备没有剩余空间。
失败()
在与bad()相同的情况下返回true,但在a发生格式错误,例如提取字母字符时当我们试图读取一个整数时
eof ()
如果打开的文件读到末尾,返回true。
好()
是最通用的状态标志:在相同的情况下返回false其中调用前面的任何函数都将返回true。请注意好与坏并不是完全对立的(好检查更多的状态)
成员函数clear()可用于重置状态标志。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗