C++字符串的截取问题
作者:休息一下接着来
这篇文章主要介绍了C++字符串的截取问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
C++字符串截取
按照字符串截取
/** * @brief 按照指定的字符串截取字符串 * @param str 需要截取的字符串 * @param pattern 按照该字符串截取 * @return 截取好的字符串vector */ std::vector<std::string> splitStr(std::string str, std::string pattern) { std::string::size_type pos; std::vector<std::string> result; //扩展字符串以方便操作 str += pattern; int size = str.size(); for (int i = 0; i < size; i++) { pos = str.find(pattern, i); if (pos < size) { std::string s = str.substr(i, pos - i); result.push_back(s); i = pos + pattern.size() - 1; } } return result; }
按照字符截取
/** * @brief 按照指定的字符截取字符串 * @param str 需要截取的字符串 * @param pattern 按照该字符截取 * @return 截取好的字符串vector */ std::vector<std::string> splitStr(std::string str, char pattern) { // 扩展字符串,方便后面进行操作 str.push_back(pattern); std::vector<std::string> result; auto iter = str.cbegin(); auto iter2 = iter; for (iter; iter != str.cend(); ++iter) { if (*iter == pattern) { result.push_back(string(iter2, iter)); iter2 = iter + 1; } } return result; }
C++截取部分字符串(类似python的切片)
1.首先在python中取一个字符串的多少位,使用s[begin:end]。
2.c++中使用一个函数来截取字符串位
头文件:
#include <string> //注意没有.h string.h是C的标准字符串函数数,c++中一般起名为ctring. 而string头文件是C++的字符串头文件。
函数原型:
string substr(int pos = 0,int n ) const;
参数说明:
- 参数1:pos是必填参数
- 参数2:n是可参数,表示取多少个字符,不填表示截取到末尾
该函数功能为:返回从pos开始的n个字符组成的字符串,原字符串不被改变
# include <iostream> # include <string> using namespace std; int main() { const string image_name = "0170.bmp"; print(image_name.substr(0, 4)); return 0; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。