C++输入整理
因为之前在一些机试中碰到了一些比较奇怪的输入,就又学习了一下c++的一些输入方式
- getline()
c++中的getline()被定义了多次
- <iostream>
cin.getline(char *);
cin.getline(char *, int size);
cin.getline(char *, int size, char delim); //delim是分隔符,默认为换行符cin中的getline()在遇到分隔符之后就停止读取输入流,该行剩余的字符一眼可以被读取,但不保留分隔符
- <string>
string s;
getline(cin, s);
- getline(cin, buff);
- for(int i=0; i<buff.size(); i++) { k = k + buff[i]; }
以上方法可以逐字对buff中内容进行分析
- while(getline(cin, buff)){
- for(int i=0; i<buff.size(); i++) { k = k + buff[i]; }
- cout << "\n"<< "\n";
- if(k[k.size()-1]=='%')
- break;
- k="";
- }
以上方法可以通过循环读入多行字符串并进行处理
- get()
c++中的有多种使用方式
- 不带参数的get()
char ch;
ch = cin.get();
返回读取到的字符,若遇到文件结束符,返回文件结束标识符EOF,一般用-1代表EOF
- 单参数的get()
char ch;
cin.get(ch); //返回
读取成功就返回true,不成功就返回false
- 3个参数的 get()
char ch[10];
cin.get(ch, 10, ','); //参数意义依次是 字符数组, 读取字符个数, 终止字符
在实际使用中,读取字符个数达到限制之前,区间终止字符会停止读取,终止字符依然在输入流中
使用单参数的get()可以获得接下来的字符
- cin >>
作为很常用的格式化输入方式,这个不用多讲,主要是流提取符">>"在提取数据时通常跳过输入流中的空格、tab键、换行符等空白字符
并且只有在输入完数据再按回车之后,该行数据才会送入到键盘缓冲区,形成输入流
当遇到无效字符或文件结束符之后,输入流cin就会处于出错状态,对cin流的所有提取操作终止。
cin>>a>>b; //最基本,也是最常用的用法,输入一个数字
char a[20]; cin>>a; // 接受一个字符串,遇"空格"、"TAB"、"回车"都结束