问题描述:
假如有一行用空格隔开的字符串的话,如何提取出每一个字符串
比如输入
abc def ghi
然后我们又需要存下来每一个字符串的话,需要怎么做。
方法一:双指针算法。
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 char str[1010]; 5 cin.getline(str, 1010); 6 int len = strlen(str); 7 //cout << len << endl; 8 for (int i = 0; i < len; i++) { 9 int j = i; 10 //每一次i循环的时候,都保证i是指向单词的第一个位置 11 while (j < len && str[j] != ' ') { //只要j没有走到终点 12 //然后我们要找到当前这个单词的最后一个位置 13 j++; 14 } 15 //当while循环结束时,j就指向当前这个空格 16 //此时从i到j-1之间就是一个单词 17 //这道题的具体逻辑 18 for (int k = i; k < j; k++) { 19 cout << str[k]; 20 } 21 cout << endl; 22 i = j; 23 //cout << j << endl; 24 } 25 return 0; 26 }
运行结果:
方法二:C++中的istringstream
具体用法如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 string str = "aa bb cc dd ee"; 5 istringstream is(str); //创建istringstream对象is 6 //并同时使is和字符串str绑定 7 string s; 8 while (is >> s) { //将从str中读取到的字符串is写入到字符串s 9 cout << s << endl; 10 } 11 return 0; 12 }
运行结果:
适用于istringstream的具体题目https://www.cnblogs.com/fx1998/p/12730320.html