1. C++ 的boost庫裡有直接的分割函數split,可以將字符串按照指定的分割規則分割成字符串數組,類似Java。 具體使用參考:http://stackoverflow.com/questions/5734304/c-boost-split-string 2. 如果不使用boost庫的話,可以使用<string.h>裡面的strtok函數進行字符串分割。 具體函數使用見:http://www.cplusplus.com/reference/cstring/strtok/ 下面附上HDUOJ 2072的源代碼,思路就是將每行的字符串按照空格分割成字符串數組,然後統計有多少個不同的字符串,這個時候剛好可以利用C++ STL裡set這個類,相同的字符串只會存儲一個。 [cpp] #include <iostream> #include <set> #include <iomanip> #include <cmath> #define PI 3.1415927 using namespace std; int getNum(string s) { set<string> str; const char *d = " "; char *p; p = strtok(const_cast<char*>(s.c_str()), d); while(p) { str.insert(p); p = strtok(NULL, d); } return str.size(); } int main() { string s; while(getline(cin,s)) { if(s=="#") break; cout << getNum(s) << endl; } return 0; }