做编程题的时候有时候会遇到这样的输入要求:“第一行为多个数字,数字之间用空格分离,第二行为balabala”。由于我们不知道第一行有多少个输入数字,对于c++编程语言来说,传统方案是采用字符串或者string来获取第一行的输入,然后自己写一个字符串处理函数将字符串中的数字分离出来,存储在数组或者vector容器中进行后续处理。但是在短时间内写这么一个函数比较麻烦,好在C++提供了一个sstream类,可以方便的将输入的字符串进行重定向到其他的数据结构中,具体使用方法如下:
首先声明库文件:
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
然后给出一个范例,显示如何将一行输入的字符串重新定向到一个vector容器中去:
int main()
{
//定义输入流字符串
string inputStream;
//将一行的输入写入到输入流字符串中去
getline(cin,inputStream);
//定义重定向输入流stringin,并将字符串inputStream中的内容重定向到stringin中去
stringstream stringin(inputStream);
int num;
//定义接收输入的int容器
vector<int> a;
//将输入流重新写入int容器中进行后续处理
while(stringin>>num){
a.push_back(num);
}
//打印容器中的元素
for(auto r:a){
cout<<r<<endl;
}
return 0;
}
程序的执行结果如下:

参考博客:https://blog.csdn.net/zdlnlhmj/article/details/79462770
网友评论