为什么要读取一个字符串并按照空格分割?
比如我们遇到这样的题目,两个人名为一对关系,会给出任意对关系。
比如: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 一个名字即可 可以在这个的基础上做出很多适合题目的改变。