c++ string split 按指定字符分割字符串

istringstream 详解

https://blog.csdn.net/longzaitianya1989/article/details/52909786

getline 解释

头文件:

getline()的原型是istream& getline ( istream &is , string &str , char delim );

其中 istream &is 表示一个输入流,譬如cin;

string&str表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str什么的都可以);

char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入)。

ps: 对于while(getline(cin,line)) 语句,这里默认回车符停止读入,按Ctrl+Z或键入EOF回车即可退出循环。

    vector<string> split(string s, char c){
        vector<string> res;
        istringstream iss(s);
        string tmp;
        while(getline(iss, tmp, c)){
            res.emplace_back(tmp);
        }
        return res;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: C++中的string类本身没有提供split函数,但可以通过使用stringstream和getline函数来实现字符串分割。 具体实现方法如下: 1. 定义一个vector<string>类型的变量,用于存储分割后的字符串。 2. 使用stringstream将原始字符串转换为流,然后使用getline函数从流中读取每个子字符串。 3. 将每个子字符串添加到vector中。 示例代码如下: ```c++ #include <iostream> #include <string> #include <vector> #include <sstream> using namespace std; vector<string> split(string str, char delimiter) { vector<string> result; stringstream ss(str); string token; while (getline(ss, token, delimiter)) { result.push_back(token); } return result; } int main() { string str = "hello,world,how,are,you"; vector<string> tokens = split(str, ','); for (auto token : tokens) { cout << token << endl; } return 0; } ``` 输出结果为: ``` hello world how are you ``` ### 回答2: C++语言中的字符串分割函数通常被称为split函数,它可以把一个字符串按照指定的分隔符进行分割,并将分割后的各个子字符串存储到一个字符串数组中。这个函数非常常用,在各种实际应用中都有涉及。 在C++中,我们可以用循环和指针来实现split函数。具体步骤如下: 1. 根据分隔符将原始字符串分成多个子字符串 2. 用一个循环遍历分割后的每个子字符串 3. 把每个子字符串赋值给一个字符串数组中相应的元素 4. 最终得到一个存储了分割后各个子字符串字符串数组 以下是一个示例程序: ``` #include <iostream> #include <cstring> using namespace std; const int MAX_N = 100; //定义字符串分割函数 int split(char *str, char **split_result, char *pattern) { int n = 0; // 指向分隔符的指针 char *tok = strtok(str, pattern); while (tok != NULL) { split_result[n] = tok; ++n; tok = strtok(NULL, pattern); } return n; //返回分割后的子字符串数量 } int main() { char str[MAX_N]; char *split_result[MAX_N]; int n; char *pattern; // 分隔符 cout << "请输入需要分割字符串:" << endl; cin.getline(str, MAX_N, '\n'); cout << "请输入分隔符:" << endl;; cin >> pattern; // 调用split函数进行字符串分割 n = split(str, split_result, pattern); cout << "分割后的字符串数组为:" << endl; for (int i = 0; i < n; i++) { cout << split_result[i] << endl; } return 0; } ``` 在这个程序中,我们用strtok函数将原始字符串str按照指定的分隔符pattern分成多个子字符串,然后通过赋值操作将每个子字符串存储到split_result数组中。程序中分割符的选取非常重要,必须根据具体的应用场景来选择。如果分割符选取不当,就可能导致split函数的结果不正确。 总结来说,C++中的字符串分割函数是非常常用的,对于不同的应用场景,我们可以选择自定义分隔符,用split函数将原始字符串分割成多个子字符串,并将每个子字符串存储到字符串数组中。这样做能够大大减少程序的工作量,提高代码的重用性和可读性。 ### 回答3: C++中具有分割字符串功能的函数有split函数,使用该函数可以将一个字符串按照分割符进行切分,得到分割后的字符串数组。 split函数的原型为:`vector<string> split(string, string)`,参数分别为要分割字符串和分隔符,返回值为分割后得到的字符串数组。 split函数的实现思路是,从头开始分析字符串,当遇到分隔符时,将当前位置之前的子串存入字符串数组中,并将指针指向下一个子串的起始位置,直至分析完整个字符串。 以下是一个简单的split函数实现示例: ```cpp #include<iostream> #include<vector> #include<string> using namespace std; vector<string> split(string str, string delimiter) { vector<string> res; size_t pos; string token; while ((pos = str.find(delimiter)) != string::npos) { token = str.substr(0, pos); res.push_back(token); str.erase(0, pos + delimiter.length()); } res.push_back(str); return res; } int main() { string str = "apple,banana,orange"; vector<string> res = split(str, ","); for (size_t i = 0; i < res.size(); i++) { cout << res[i] << endl; } } ``` 运行结果为: ``` apple banana orange ``` 可以看到,原始字符串被成功切分为了三个子串,并且存储在了字符串数组中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joshua_yi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值