C++ split分割字符串
2020-09-15 16:59 宋海宾 阅读(390) 评论(0) 编辑 收藏 举报将字符串绑定到输入流istringstream,然后使用getline的第三个参数,自定义使用什么符号进行分割就可以了。
#include <iostream> #include <sstream> #include <string> #include <vector> using namespace std; void split(const string& s,vector<int>& sv,const char flag = ' ') { sv.clear(); istringstream iss(s); string temp; while (getline(iss, temp, flag)) { sv.push_back(stoi(temp)); } return; } int main() { string s("123:456:7"); vector<int> sv; split(s, sv, ':'); for (const auto& s : sv) { cout << s << endl; } system("pause"); return 0; }
istringstream是一个比较有用的c++的输入输出控制类。
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstream>这个头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);
它的作用是从string对象str中读取字符。
#include<iostream> #include<sstream> //istringstream 必须包含这个头文件 #include<string> using namespace std; int main() { string str="i an a boy"; istringstream is(str); string s; while(is>>s) { cout<<s<<endl; } }
string的getline函数:
getline()函数的定义如下所示
1. istream& getline ( istream &is , string &str , char delim );
2. istream& getline ( istream &is , string &str )
is 进行读入操作的输入流
str 用来存储读入的内容
delim 终结符,遇到该字符停止读取操作,不写的话默认为回车