c++中的while(cin)问题】的更多相关文章

http://www.imeee.cn/News/GouWu/20090801/221298.html cin.get()与getchar()函数有什么区别? 详细点..C++中几个输入函数的用法和区别(cin.cin.get().cin.getline().getline().gets().getchar())) 1.cin1.cin.get()2.cin.getline()3.getline()4.gets()5.getchar() 1.cin>> 用法1:最基本,也是最常用的用法,输入一…
  在Qt中,用的最多的是GUI页面,但GUI比较慢,有些小的试验不妨先用console,当然在Qt里面可以直接使用cout, cin这些. 不过可能不会兼容Qt自带的一些类型,比如QByteArray等类型.在网上找了一下,发现可以用如下的方法来进行输出. 首先需要包含下列头文件: #include <QTextStream> #include <stdio.h> 然后,在使用cin.cout.cerr之前,创建下列变量: QTextStream cin(stdin,  QIOD…
今天做tju的oj,遇到一个问题,想前部分用cin函数一个一个的读入数据,中间部分利用getline()一起读入一行,但是测试发现,cin之后的getline函数并无作用,遂谷歌之.原来cin只是在缓存区中,把字符读走,会剩余/n在缓存区中,但是getline对/n极度敏感,导致getline刚开始读入便遇到/n于是停止读入数据. 例如一段代码: #include<iostream> #include<string> using namespace std; int main()…
xp系统中利用dev-cpp进行编程,语句while(cin>>str),str是个string类型,在一行中输入几个string,末位加个ctrl+z,输入没有结束,除非出入换行后,再输入ctrl+z才能跳出输入.一直不明白未什么,解释请看下. 输入缓冲是行缓冲.当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储.每当按下回车键后,cin.get()   就会检测输入缓冲区中是否有了可读的数据.cin.get()   还会对键盘上是否有作为流结束标志的   Ctrl+Z …
对于while (cin>>str)和ctrl z的问题,网上有以下解释: ------------------------------------------------------------------------------------------------------------------------------ 输入(cin)缓冲是行缓冲.当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储.每当按下回车键后,cin就会检测输入缓冲区中是否有了可读的数据. c…
一.string中的getline不是string的成员函数,属于全局函数,使用需要include<string>,有两个重载版本: 函数原型参见:http://www.cplusplus.com/reference/istream/istream/getline/ 标准信息来自<c++primer>和<c++ primer plus>,另http://blog.csdn.net/vanwaals/article/details/5753556 http://blog.…
(1)cin 在理解cin功能时,不得不提标准输入缓冲区.当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7 ,而不是6. cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲…
cin.getline在输入char时: using namespace std; ; char name[ArSize]; char dessert[ArSize]; cout << "Enter your name:\n"; cin.getline(name, ArSize); // reads through newline cout << "Enter your favorite dessert:\n"; cin.getline(de…
cin: cin函数是标准库的输入函数,在读取string时遵循以下规则: 1)读取并忽略开头所有的空白符(包括空格.换行符.制表符). 2)读取字符直到遇到空白符,读取终止. 例如: 当输入的是“    你好  朋友”,输出仅为“你好”. getline: getline函数接受两个参数:一个为输入流的对象,一个为string对象. getline函数从输入流的下一行进行读取,并保存内容到string对象中,和cin 不同的是,它不会忽略开头的空白符,并且它会读取这一行所有的内容直到遇 到换行…
cin是istream类的对象,它是从标准输入设备(键盘)获取数据,程序中的变量通过流提取符">>"从流中提取数据.流提取符">>"从流中提取数据时跳过输入流中的空格.tab键.换行符等空白字符.注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓存区,形成输入流,提取运算符">>"才能从中提取数据.需要注意保证从流中读取数据能正常运行.  例如: int a,b;        cin>>a…
这段时间在刷题过程中遇到一个cin和getline混合使用中的问题,解决之后记录如下: 先来看一段代码 #include <iostream> #include <string> using namespace std; int main() { string str; ; cin >> n; cout << "num: " << n << endl; while (n--) { getline(cin, str)…
猎豹网校C++ Primer学习笔记 - ostartech - 博客园 https://www.cnblogs.com/wxl845235800/p/11396323.html 在VS中使用cin>>会闪退,原因未知,用getline就正常. 需要在cin>>后面加上cin.ignore(): cin>>name;cin.ignore(); [参考] C++中getline()和cin()同时使用时的注意事项 - 建森要健身 - 博客园 https://www.cnb…
int a; vector<int>res; while(cin>>a){ res.push_back(a); } 给出这段代码 可以输入1 2  3 4 5并以回车结束,从而分5次存入res. 也可以输入 1 2回车3 4 5回车 当然可以这么一直输入,直到输入一个任意字符结束 无while仅仅为cin>>a时,若输入1 2 3 回车 ,此时仅仅存入第一个1. 有个问题:a只是一个变量,不能同时放入5个数据,那么这个数据流到底存在哪,又是怎么依次存入res中的? 猜测…
这个问题困扰了我有一段时间了,趁着十一放假有时间,仔细研究了一下 首先来看一下输入输出运算符cin>>的构成:cin和>> cin>>是由两部分构成的,cin和>>,其中cin是输入流istream类的一个对象,隶属于iostream函数库 而>>则是运算符:这个运算符的作用是:从左侧cin对象中读取数据,并将它赋给右侧的运算对象 大体的大概说完了,接下来就是干货了!! ......................................…
  问题描述一:(分析scanf()和getchar()读取字符) scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的.但是有时候却就是因为使用这些函数除了问题,却找不出其中的原因.下面先看一个很简单的程序:程序1:    #include <stdio.h>    int main()    {char ch1, ch2;scanf("%c", &ch1); scanf("%c", &…
在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put.如:    cout.put('a');调用该函数的结果是在屏幕上显示一个字符a.put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式).如    cout.put(65 + 32);也显示字符a,因为97是字符a的ASCII代码. 可以…
声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1.cin>> cin使用空白(空格.制表符.回车)来确定字符串的结束位置. cin会将换行符留在输入输出队列中. #include<iostream> using namespace std; int main() { ]; ]; cin>>p; cout<<p; cin>>q; cout<<q; ; } 实验:上述程序中输入:good [空格或者tab] job…
转:问题描述一:(分析scanf()和getchar()读取字符) scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的.但是有时候却就是因为使用这些函数除了问题,却找不出其中的原因.下面先看一个很简单的程序:程序1:    #include <stdio.h>    int main()    {char ch1, ch2;scanf("%c", &ch1); scanf("%c", &…
1.流的控制 iomanip          在使用格式化I/O时应包含此头文件.    stdiostream   用于混合使用C和C + +的I/O机制时,例如想将C程序转变为C++程序 2.类继承关系 ios是抽象基类,由它派生出istream类和ostream类, iostream类支持输入输出操作,iostream类是从istream类和ostream类通过多重继承而派生的类 类ifstream继承了类istream,类ofstream继承了类ostream,类fstream继承了…
参考地址:http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入 #1: #include <iostream>using namespace std;…
<C++ Primer Plus(第六版)> P124 第8题 #include <iostream> using namespace std;   struct Pizza { char brand[20]; float diameter; int weight; };     int main(){ Pizza *pizza = new Pizza; cout << "Your company's name: "; cin.get(pizza-&…
树 利用顺序存储和链式存储的特点,可以实现树的存储结构的表示,具体表示法有很多种. 1)双亲表示法:在每个结点中,附设一个指示器指示其双亲结点在数组中的位置. 2)孩子表示法:把每个结点的孩子排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空.然后n个头指针又组成一个线性表,采用顺序存储结构,存放进一个一维数组中. 3)孩子兄弟表示法:任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的.因此,可以设置两个指针,分别指向该结点的第一个…
原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5241544.html 1.cin>> 1)最常见的是获取输入的一个字符或数字,如 int a,b; cin>>a>>b: 注意:cin>>会自动过滤掉不可见字符(如空格 回车 tab等).若不想过滤掉空白字符,可以用noskipws流进行控制. 如下程序,没有过滤掉不可见字符,输入的空格字符存入了input[1]中,也可输出. 2)获取输入的字符串,可以用数…
很对人对于字符串的输入输出一直是比较模糊的,今天总结一下几个常用的输入流符号对于输入字符串时的区别: 1.scanf(),首先 它遇到空格或回车键(\n)就会结束,并且会将回车符算入字符串中: 2.cin ,对于cin来说,它不会把回车符(\n)算进字符串中,其他的与scanf()相同: 3.gets()和 getline(), 当你定义了一个字符数组,那么读入一行只能用gets(),需要注意的是: (1)它只在遇到回车键时结束输入: (2)它不会将回车键算到字符串中: 输出: 对于输出来说,你…
1. 当缓冲区中有残留数据时,cin函数会直接去读取这些残留数据而不会请求键盘输入.而且,回车符也会被存入输入缓冲区中. int num{}; while(cin>>num) cout<<num<<endl; 这意味着两个问题: (1)如果插入了非法字符,不能转化为int类型,那么将始终留在缓存区,阻塞正常输入.换行符‘\n’也是非法字符; (2)如果(变量获取的元素个数)少于(键盘输入字符数),如用ch获取字符串,可以实现逐一读取输入的字符; 2. 我习惯的清空缓存去…
转:http://www.cnblogs.com/FCWORLD/archive/2010/12/04/1896511.html 转:问题描述一:(分析scanf()和getchar()读取字符) scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的.但是有时候却就是因为使用这些函数除了问题,却找不出其中的原因.下面先看一个很简单的程序:程序1:    #include <stdio.h>    int main()    {char ch1,…
C++中标准输入cin有多种输入方式.. 这篇文章罗列的还是简要易懂的.C++输入cin详解...如果只是简单的使用cin>>的话,会单个token的读入.但是会忽略换行符,空格,制表符等空白符.其中cin.getline()和cin.get()都会遇到一个非常棘手的事情,就是当输入的字符串,或者说缓冲区中的字符多于第二个参数int的要求时.缓冲区中残余的字符串怎么处理 cin>> cin>> var,只会忽略空白符,按照参数var的格式,读入一个合法的字符串.剩下的字…
一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFileInfoList.利用其返回的QFileInfo,可以使用QFileInfo::absoluteFilePath()方法为返回其绝对路径.  Bool QDir::exists ( const QString & name ) 是判断以参数中为路径名的路径是否存在,如果存在该路径则返回真. bool…
cin.getline()和cin.get()都是对输入的面向行的读取,即一次读取整行而不是单个数字或字符,但是二者有一定的区别. cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中,然而cin.getline()每次读取一整行并把由Enter键生成的换行符抛弃,比如: #include <iostream> using std::cin; using std::cout; ; int main( ){ cout << "Enter your n…
转自http://www.cnblogs.com/penelope/articles/2426577.html  cin .cout   基本说明: cin是标准输入流对象,代表标准输入设备(键盘),使用方法:cin >> 变量.功能:数据通过输入设备放在缓存区,cin从缓存区中读出数据存到变量中. cout是标准输出流对象,代表标准输出设备(显示器),使用方法:cout << 变量.功能:从变量中读取数据放入缓存区,然后经输出设备显示数据. cin,cout,重载了"&…