作为一名c++程序员,经常遇到的一件尴尬事件就是c++没有一个专门用来字符串分割的函数,每次都要调用组合技,这里总结一下几种方法
1.利用string的 find && substr
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void mysubstr() {
string tmp("0.0..0.0.");
vector<string> ret;
while (tmp.find(".") != string::npos) {
string t1 = tmp.substr(0, tmp.find("."));
if (!t1.empty()) ret.push_back(t1);
tmp = tmp.substr(tmp.find(".") + 1);
}
if (!tmp.empty()) ret.push_back(tmp);
for (auto r : ret) {
cout << r << endl;
}
}
int main() {
mysubstr();
return 0;
}
2.利用stringstream, stringstream要包含头文件sstream
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
void mysubstr() {
stringstream input("0.0.0..0.");
vector<string> ret;
string tmp;
while (getline(input, tmp, '.')) {
if (!tmp.empty()) {
ret.push_back(tmp);
}
}
for (auto r : ret) {
cout << r << endl;
}
}
int main() {
mysubstr();
return 0;
}