1. There is a direct split function in the C ++ boost library. You can split a string into a string array according to the specified segmentation rules, similar to Java. Specific Use reference: http://stackoverflow.com/questions/5734304/c-boost-split-string 2. If you do not use the boost library, you can use the strtok function in <string. h> to split the string. For specific function use see: http://www.cplusplus.com/reference/cstring/strtok/ attached HDUOJ 2072 source code, the idea is to split each line of the string by space into a string array, and then count how many different strings, at this time, you can use the set class in C ++ STL. The same string will only store one. [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 ;}