[C++]-C++基本输入及读取整行
文章目录
- 标准输入流
- cin`>>`
- cn.get
- 整行读取
- std::getline
- cin.getline
- cin.get
C++标准库提供了一组丰富的输入/输出功能。C++的I/O发生在流中,流是字节序列:
- 如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。
- 如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
标准输入流
预定义的cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘;cin 与流提取运算符>>
结合使用。
cin>>
cin默认使用空白(空格、制表符、换行符)来确定字符串的结束位置:
#include <iostream>
using namespace std;void testInput(){int nAge;double height;string name;cout<<"Input Age, height, name: "; // 12 1.65 mike josncin>>nAge>>height>>name;cout<<"Age: "<<nAge<<", Height: "<<height<<", Name: "<<name<<endl;// 12 1.65 mike
}
读取name时,只读取前面一部分(因空格结束了字符串的读取)。
cn.get
cin.get()可以读取每个字符返回,也可把读取的内容放到字符参数中:
int_type get();
basic_istream& get (char_type& c);
cin.get()依次读取每一个字符,直到结束(Ctrl+z):
void testGet(){cout<<"Input: ";int nGet;while( (nGet=cin.get())!=EOF){ // 输入回车时,才依次读取(回车符本身也作为一个字符读取到cout<<(int)nGet<<endl;}
}
整行读取
std::getline可以读取一行放入string中,cin.get与cin.getline可以读取一行放入到字符数组中。
std::getline
std::getline从输入流中读取字符到string中,直到遇到分隔符(默认\n
):
istream& getline (istream& is, string& str, char delim);
istream& getline (istream& is, string& str);
若指定分隔符(如设为空格),可用于字符串分割:
#include <iostream>
#include <sstream>
using namespace std;void testLine(){cout<<"Input: ";string strIn;std::getline(cin, strIn);
// cout<<strIn;string strWord;istringstream is(strIn);while(std::getline(is, strWord, ' ')){cout<<strWord<<endl;}
}
cin.getline
cin.getline从输入流中读取字符到字符数组,直到遇到分隔符(默认\n
)或数组最大长度-1;末尾会自动添加NULL;通过gcount可获取读取字符数(包括分隔符):
basic_istream& getline (char_type* s, streamsize n );
basic_istream& getline (char_type* s, streamsize n, char_type delim);
字符数组中不包含分隔符(且已从输入缓冲区中删掉了),但gcount包括分隔符(即:len(ary)+1):
char strIn[1024];for(int i=0; i<5; ++i) {cin.getline(strIn, 1024);cout << "count: " << cin.gcount() << endl;}
cin.get
cin.get从输入流中读取字符到字符数组,直到遇到分隔符(默认\n
)或数组最大长度-1;末尾会自动添加NULL:
basic_istream& get (char_type* s, streamsize n);
basic_istream& get (char_type* s, streamsize n, char_type delim);
cin.get读取时,会把分隔符留在缓冲区中,若不主动去掉,则会一直读取空字符串:
char strIn[1024];for(int i=0; i<5; ++i) {cin.get(strIn, 1024).get();}
若没有后面的get(),则在读取一行后,后续一直读取空(因换行符还在缓冲区中)。
[C++]-C++基本输入及读取整行相关推荐
- 字符缓冲输入流,高效读取整行数据
import java.io.BufferedReader; import java.io.FileReader;/* 字符缓冲输入流,高效读取整行数据*/ public class Writer { ...
- C语言 输入是一整行的字符串
输入是一整行的字符串的 C语法: char buf[20]; gets(buf); C++语法: 如果用string buf;来保存: getline( cin , buf ); 如果用char bu ...
- C++ fscanf 读取一整行
转自:https://www.cnblogs.com/luyi07/p/9527692.html scanf, fscanf很相似,都是从流中读取输入,然后赋值给变量 int scanf(const ...
- Java黑皮书课后题第8章:**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行、整列或者对角线都是1或0的行、列和对角线
**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行.整列或者对角线都是1或0的行.列和对角线 题目 题目描述与运行示例 破题 代码 题目 ...
- c语言:从标准输入读取几行输入,输入打印到标准输出上,加上行号
编写一个程序,从标准输入读取几行输入.每行输入都要打印到标准输出上,前面加上行号. 在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制. 解:程序: #include <stdio. ...
- Python读取多行键盘输入
机考处理键盘输入 处理一行键盘输入 对于多元输入 n,k,m=map(int,input().split()) 方法一: line=list(map(str,input().split()))#将输入 ...
- shell中for循环,读取一整行
shell中for循环,读取一整行 shell中for循环的默认分隔符是:空格.tab.\n 需求是只以\n作为分隔符 shell for循环以\n作为分割符,方式一: 文件aa.sh [html] ...
- linux sed 选取,linux sed 替换(整行替换,部分替换)、删除delete、新增add、选取...
sed命令行格式为: sed [-nefri] 'command' 输入文本 常用选项: -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上 ...
- C/C++如何整行读入字符串?
在写代码的过程中,经常要一行一行的读入字符串进行处理,这里我总结了一些方法,供大家参考. 方法一:scanf()读入char[] 使用方法: char str[1024]; scanf("% ...
最新文章
- 【原】iOS学习之UITabBar的隐藏
- 自学python什么时候能够兼职-总结下我是如何利用python在闲余时间月赚5千外快...
- micropython中文教程.pdf_micropython中文教程
- 基于visual Studio2013解决C语言竞赛题之1026判断排序
- avue-crud 会多出来空白的一列
- HIT Software Construction Review Notes(2-2 Process, Systems, and Tools of Software Construction)
- 上位机发送FINS UDP命令读写欧姆龙PLC数据
- MAC m1 PRO 安装安卓手机模拟器
- IEEE 中 LaTeX在作者后面加上ORCID标志和链接
- Actors编程模型
- Javascript 格式化json字符串
- 【自动控制原理_B站网课笔记】开环系统Nyquist曲线绘制
- CSTC 部分pwn wp
- 移动安全-adb使用和提取apk文件
- Pytorch 使用不同版本的 cuda,跟使用不同版本的cuda进行编译扩展库,其实TensorFlow也是一样
- QT调试的详细操作步骤
- Cluster: FarthestFirst
- Electron常见问题 49 - module was compiled against a different Node.js version usingNODE_MODULE_VERSION
- 图片或PDF转化为文字文本免费软件推荐
- 凸优化进阶之对偶理论
热门文章
- jenkins 从机连接主机显示 404 Not Found
- 为什么要遵循单一职责原则
- ReactiveSwift 入门级 浅析
- python 异常处理结构
- Tensorflow2.0学习(五) — Keras基础应用(IMDb电影集情感分析)
- matlab稀疏贝叶斯,基于变分稀疏贝叶斯学习的DOA估计
- 软件工程实践-软件评测
- H5 通过exceljs,根据模板替换内容,导出xlsx文件
- [QLU Regular Contest 003] G.Youmu with greedy money problem //dp+滚动数组
- python文件路径及目录