字符串流

1 我们往往会遇到这样的情况,我们在读文件或是从从输入流读数据的时候,往往需要一次读取一行,然而我们在处理数据的时候,又想一个字符串一个字符串的处理。我们该怎么办呢。我们可以用字符串流:

#include <iostream>
#include <sstream>
using namespace std;
int main()
{
    string line,word;
    while(getline(cin,line))// 从输入流读取一行数据
    {
       istringstream stream(line);// 创建一个输入流对象
       while(stream >> word)// 从输入流对象往变量word里写数据
       {
           cout << word << endl;
       }
    }
    return 0;
}
这个程序就实现了我们的想法
下面我们一起看一下字符串流对象的定义,他有默认构造函数,所以我们可以这样定义一个字符串流对象.
stringstream stream;
我们还可以这样定义:
stringstream stream(s);// 调用有参构造函数。
另外他还有其他的操作:
如:
stream.str(); 用于返回stream里面存储的字符串。
stream.str(s);
等价于:
stringstream stream(s);
2 stringstream 提供转换和/或格式化
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
    string line,val1 = "hello ",val2 = "world";
    stringstream stream;
    stream << "val1: " << val1 << "val2: " << val2 << endl;
    line = stream.str();
    cout << line;
    return 0;
}
我们再次将数据找回来。。
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
    string line,val1 = "hello ",val2 = "world";
    stringstream stream;
    stream << "val1: " << val1 << "val2: " << val2 << endl;
    line = stream.str();
    cout << line;
    string val11,val22;
    istringstream istream(line);
    istream >> val11 >> val1 >> val22 >> val2;
    cout << val11 << " "<< val1 << " " << val22 << " " << val2;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值