[C++代码片段] 字符串分隔
C++的实用库函数实在太少了,远远不如PHP的多。。。
解决方案来自:Split a string in C++? - Stack Overflow。
我之前也写过很多个版本,但由于没有归档,一时半会儿也不好找,所以就采用了这个简洁了。
这是我自己使用的 C++11 的版本,如对你不适用,请采用原文的回答。
#include <string> #include <vector> #include <sstream> #include <iostream> std::vector<std::string> split_string(const std::string& raw, char delimiter) { using namespace std; string str; vector<string> result; istringstream iss(raw); while(getline(iss, str, delimiter)) result.push_back(move(str)); return result; // moved } int main() { const char* strs[] = { "try split me", "one two three", " sugar, yes please", }; for(auto& str : strs) { auto ss = split_string(str, ' '); for(auto& s : ss) std::cout << "[" << s << "] "; std::cout << std::endl; } return 0; }
上面的程序将输出(在线运行):
[try] [split] [me] [one] [] [two] [] [] [] [] [] [three] [] [sugar,] [yes] [please]
本代码片段的功能只是纯分隔字符串,并没有去除空白等等,如有需要请自行修改。