C++学习笔记-stringstream[字符串流]

  • C++学习笔记-stringstream[字符串流]


  • stringstream类简介:

头文件:#include<sstream>

主要函数:

        a. bool eof()  :字符串流为空时返回 true

        b. clear() :清空字符串流

用途:

    在一些编程应用中,可能有时候会给一整串信息由空格间隔着的字符串,这个时候如果用原有的string,char* 要分割这些信息都很麻烦,而C++提供字符串流,可以有效分割字符串。


  • stringstream用法:

先言:

对于C++的流不陌生,其实就是用 <<  >> 对数据进行传输

声明:

先声明再赋值或在构造流时便赋值

//1
string str;
cin>>str;
stringstream ss;
ss<<str;


//2
string Fix_Data = "1998.9 + 26 = MyHeart";
stringstream _ss(Fix_Data);

切割串信息:

用到前面的eof,当然是切割到字符串流空就结束

//切割流
    stringstream ss;
	ss.clear();    //清空流
	string Str;
	getline(cin, Str);
	ss << Str;
	while (!ss.eof())
	{
		string Tempstr;
		ss >> Tempstr;
		cout << Tempstr << endl;
	}
	ss.clear();   //清空流

样例输入:negative seven hundred twenty nine

样例输出:negative
                             seven
                             hundred
                             twenty
                             nine            

养成好习惯,切割前后都用 clear()对流进行清空


转换成任意类型:

切割流并不是字符串单一流向,还可以转换成浮点型,整型等等

//类型互换
    string Fix_Data = "1998.9 + 26 = MyHeart";
	stringstream _ss(Fix_Data);
	double Birth;
	_ss >> Birth;
	cout << "Birth: "<<Birth << endl;

	char Signal;
	_ss >> Signal;
	cout << "Signal: " << Signal<<endl;

	int Day;
	_ss >> Day;
	cout << "Day: " << Day << endl;

	_ss >> Signal;
	cout << "Signal: " << Signal << endl;

	char Sad[10];
	_ss >> Sad;
	cout << "Sad: " << Sad << endl;

样例输出:Birth: 1998.9
                             Signal : +
                             Day : 26
                             Signal : =
                             Sad : MyHeart

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值