关于cin

今天同学调试一个简单的程序的时候发现了问题,我们两个讨论的时候弄出了好多乐子

#include <iostream>
using namespace std;
int main()
{
    char c1=7;
    cout << "c1=";
    while (cin >> c1)
    {
        if (‘y‘ == c1)
        {
            cout << "Good" << endl;
            break;
        }
        else
            cout << "Try again" << endl;
    }

    system("pause");
}

就是这个程序,其实很简单,同学测试的时候每次都是输入的25这样两个字符的数,导致每次打印两个Try again 而发给我测试的时候我都是用2这种一个字符的数

导致程序在我这里是正常的,到他那里就错了。。。。。其实重点是ci是一个字符类型的对象,而且cin是一个流,把键盘输入陆续输出到c1对象,所以25是字符‘2‘和‘5‘,记录这个主要是告诉自己以后调试的时候要先用别人的测试用例,这样有助于快速定位到问题

时间: 2024-12-28 17:49:09

关于cin的相关文章

string 类型的输入操作符 cin 和 getline 函数分别如何处理空白字符?

string用来读取一个word : string 类型的输入操作符 cin 对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符仍留在输入流中). getline 函数用来读取整行文本,接受两个参数:一个输入流对象和一个 string 对象,例如 getline(cin,line): getline 函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在

C++ 关于大多数人将 cin::sync() 视为清除缓存区函数的错误

百度cin::sync(),得到的绝大多数解释都是用作清除缓冲区,并声明一般与cin::clear()函数一起用达到目的. 同样百度清除缓冲区的方法,也是绝大多数说用cin::sync()达到此目的. 然而cin::sync()却并非是用作清除缓冲区的,所以这样用有时候不能达到我们想要的清空缓冲流的效果. http://www.cplusplus.com/reference/istream/istream/sync/ 对于cin::sync,作用根据上述C++文档说明,应该为: Synchron

关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流

原文地址:http://www.hankcs.com/program/cpp/cin-tie-with-sync_with_stdio-acceleration-input-and-output.html http://www.clanfei.com/2012/03/235.html 在网上查看别人的ACM代码时,发现别人输入输出语句用的总是scanf与printf,有点不解,还以为他们用的都是C语言,而非C++,但今天做的一道题(Sort): 发现与网上的其他高手使用完全相同的方法,使用sca

C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法(转)

学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1.cin>>          用法1:最基本,也是最常用的用法,输入一个数字: #includ

c++ cin&gt;&gt;详解

参考地址:http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入 #1: #include <iostream>using namespace std;

cin 判断输入的数据类型

在使用cin操作进行数据输入的过程中,经常会出现定义的数据类型与键盘输入的数据类型不匹配的情况,那么如何来解决这一问题呢?这里举一个简单的例子, #include<iostream> using namespace std; int main(int argc,char **argv) { long x;//这里定义一个long型的变量x cin>>x; while( cin.fail() ) { cin.clear();//复位标志,将流cin中的所有状态值都重设为有效状态 co

cin 字符串输入

cin 字符串输入 在学习c的时候,关于字符串的输入,记得有 scanf("%s",s); gets(s); 还有...o.o 好想没了... scanf("%s",s) 读取一行,但空格相当与一个'\n' 不读取. while(scanf("%s",s)){} : 支持 Ctrl+z 结束输入 即 此次运行表达式==0. gets(s) 读取一行,包括空格. cin>>s while(cin>>s): 也支持 Ctrl+

C++IO关于cin&gt;&gt;和getline的理解

这个问题困扰了我有一段时间了,趁着十一放假有时间,仔细研究了一下 首先来看一下输入输出运算符cin>>的构成:cin和>> cin>>是由两部分构成的,cin和>>,其中cin是输入流istream类的一个对象,隶属于iostream函数库 而>>则是运算符:这个运算符的作用是:从左侧cin对象中读取数据,并将它赋给右侧的运算对象 大体的大概说完了,接下来就是干货了!! ......................................

在QT程序中使用cout和cin

1先输入10个数字,再输出. [cpp] view plaincopyprint? #include <QtCore/QCoreApplication> #include <QtCore/QList> #include <QTextStream> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QTextStream cin(stdin, QIODevice::ReadOnly);