1 std::istringstream
2 std::stringstream
1 std::istringstream
input
1 在一个字符串string里提取部分数据,这些数据以空格' '为间隔。
以空格' '为间隔,可以直接提取
1 #include <iostream> 2 #include <sstream> 3 4 struct MyStruct 5 { 6 std::string str1, str2, str3; 7 double db; 8 int num; 9 char ch; 10 }; 11 12 void main() 13 { 14 std::string mystring("china google microsoft 12.9 123 A");//创建一个字符串,用于提取 15 MyStruct struct1;//创建一个结构体,用于保存结果 16 17 std::istringstream input(mystring);//创建一个字符串扫描流 18 input >> struct1.str1 >> struct1.str2 >> struct1.str3 >> struct1.db >> struct1.num >> struct1.ch;//扫描 19 20 std::cout << struct1.str1 << std::endl;//打印 21 std::cout << struct1.str2 << std::endl; 22 std::cout << struct1.str3 << std::endl; 23 std::cout << struct1.db << std::endl; 24 std::cout << struct1.num << std::endl; 25 std::cout << struct1.ch << std::endl; 26 27 system("pause"); 28 }
2 在一个字符串string里提取部分数据,这些数据以'#'为间隔。
以'#'为间隔,要多处理一步,先把'#'查找和替换成空格' ',再提取
1 #include <iostream> 2 #include <sstream> 3 4 struct MyStruct 5 { 6 std::string str1, str2, str3; 7 double db; 8 int num; 9 char ch; 10 }; 11 12 void main() 13 { 14 char mystring[] = "china#google#microsoft#12.9#123#A";//创建一个字符串,用于提取 15 16 for (char *p = mystring; *p != '