c++ 11(七)


1.string流:

istringstream 代表字符串输入流,istringstream可以和一个字符串绑定,可以是自己创建的字符串,也可以是从getline函数得来的字符串


#include <sstream>
#include <iostream>
#include <fstream>

int main(int arvc, char* argv[])
{
	std::string line;
	std::ifstream in("./input.txt");    //读文件对象
	int countLine = 0;         //行数
	while (getline(in,line))
	{
		++countLine;
		std::istringstream sin(line);              //实例化一个istringstream对象,用字符串来初始化它
		std::cout << countLine << " ";
		std::string current;
		while (sin >> current)                 //判断当前的行读完与否
		{
			std::cout << current << " ";
		}
		std::cout << std::endl;
	}
	return 0;
}

代码中先用ifstream打开一个文件,然后用getline读取里面的每一行,countLine是为了记录一共读了多少行,可以看到,我们在初始化istringstream 的时候,我们要传一个std::string的对象给它的构造函数,因为这个是流对象,从iostream继承,那么也就同样可以使用它的状态来当做if的判断条件,如果不能读current这个string值,那么这个循环就不能进行下去了,就会直接结束。

ostringstream 这个用来临时保存字符串,因为流都会有缓冲区,那么我们就可以把最后要输出的字符串慢慢填入这个缓冲区,最后再调用str()这个函数来得到保存在缓冲区里面的值。特别要注意str() 和 str(s) 这两个函数的区别:第一个是得到保存在流中的字符串,而第二个是把s拷贝到流中。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值