C++流概述

C++的I/O操作是通过流库实现的,包括标准I/O流、文件I/O流和字符串I/O流。流对象如cin、cout、cerr、clog等用于不同场景的数据传输。C++中读取string对象可以通过cin >> string或getline(istream, string)。在STL中,stringstream用于在内存字符串中进行读写操作。文件操作中,可以使用不同的流操作复制文件,如逐个字符、逐行或使用缓冲区。流缓冲区允许直接访问streambuf进行更底层的控制。此外,C++的格式化输出可以通过控制符实现。" 115167090,9067116,网络流算法详解:Edmonds-Karp与Dinic,"['算法', '网络流']
摘要由CSDN通过智能技术生成
C++流概述

在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。

C++流涉及以下概念:

  • 标准I/O流:内存与标准输入输出设备之间信息的传递;
  • 文件I/O流:内存与外部文件之间信息的传递;
  • 字符串I/O流:内存变量与表示字符串流的字符数组之间信息的传递。

STL中定义的流类:

流类分类 流类名称 流 类 作 用
流基类 ios 所有流类的父类,保存流的状态并处理错误
输入流类 istream 输入流基类,将流缓冲区中的数据作格式化和非格式化之间的转换并输入
  ifstream 文件输入流类
  istream_withassign cin输入流类,即操作符>>输入流
  istrstream 串输入流类, 基于C类型字符串char*编写
  istringstream 串输入流类, 基于std::string编写
输出流类 ostream 输出流基类,将流缓冲区中的数据作格式化和非格式化之间的转换。并输出
  ofstream 文件输出流类
  ostream_withassign Cout、cerr、clog的输出流类,即操作符<<输出流
  ostrstream 串输入流类, 基于C类型字符串char*编写
  ostringstream 串输入流类, 基于std::string编写
输入/输出流类 iostream 多目的输入/输出流类的基类
  fstream 文件流输入/输出类
  strstream 串流输入/输出类, 基于C类型字符串char*编写
  stringstream 串流输入/输出类, 基于std::string编写

注,对于串流,提供了两套类,一个基于C类型字符串char *编写(定义于头文件strstream),一个基于std::string编写(定义于sstream), 后者是C++标准委员会推荐使用的。另外看一些资料,都说还定义了文件流和串流的基类fstreambase和strstreambase,而且描述ofstream继承于ostream和fstreambase,但没有找到,于是省略了。可搜索关键字(fstreambase或strstreambase)查看详情。

预定义标准流对象:

istream &cin; //键盘 
ostream &cout; //屏幕 
ostream &cerr; //屏幕 
ostream &clog; //打印机 
wistream &wcin; 
wostream &wcout; 
wostream &wcerr; 
wostream &wclog;

C++中读取string对象

1.标准输入读取:cin >> string

a.忽略开头所有的空白字符(空格、换行、制表符等);

b.读取字符直至再次遇到空白字符,读取终止;

2.读取整行文本:getline(istream, string)

a.不忽略开头的空白字符;

b.读取字符直至遇到换行符,如果第一个字符是换行符,则返回空string;

c.返回时丢弃换行符,换行符不存储在string中。

STL C++中string、ifstream、stringstream的使用

1、从标准输入接受字符串,然后进行相关处理

#include<iostream> 
#include<sstream> 
#include<string> 
using namespace std; 
int main() 

string s; //定义一个stirng对象,从标准输入接受一个字符串 
cout<<"请输入一行字符串:"<<endl; 
getline(cin,s); 
stringstream ss(s); //定义一个string流(使用s实例化) 
cout<<"处理后的字符串为:"<<endl; //将string流里的东西输出 
for(string s1;ss>>s1;cout<<s1<<endl); 
return 0; 
}

运行结果如下:

请输入

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值