【字符串】用getline和stringstream读取一个字符串并按照空格分割

为什么要读取一个字符串并按照空格分割?

比如我们遇到这样的题目,两个人名为一对关系,会给出任意对关系。

比如:Ashok Kiyoshi Ursala Chun Ursala Kiyoshi Kiyoshi Chun 

由于我们不知道到底有几个人名 我们无法事先定义变量,然后根据具体的循环一个一个读入变量值。

我们只能把这一整句话用一个字符串string存储 但是cin>>string无法读入空格 这句话是包含空格的,所以我们要用

getline:

stirng temp;
getline(cin,temp);

然后要创建一个字符串流对象来按空格分割名字输出 

stringstream

stringstream str(temp);

然后只要用这个字符串流对象来输出名字

所以要先创建两个string变量用于输出一对关系中的两个名字

string name1,name2;

由于我们不知道到底有多少对关系 我们利用while循环 一次输出两个名字 

while(str>>name1>>name2){
           
///
///
///
}

这样就可以一次处理操作一对关系了 这个方法的原因就是字符串流输出时 >> 无法读入空格 所以空格就会拿来当分隔符 就可以按空格切割了 

而且也很巧妙的可以一次处理一对关系 在不知道有多少对关系的情况下 非常适合

如果题目是一次给出一个名字 不知道有多少名字 只需要把while循环中 一次str>>name 一个名字即可 可以在这个的基础上做出很多适合题目的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值