网站显示备案号,如何查看域名是否备案,商品定制平台网站,wordpress文章字体样式概要
Python 的字符串天生支持 split( ) 操作#xff0c;支持单个字符或字符串作为分隔符。 C 在这方面显得很笨拙#xff0c;但是在 C20 下经过一番尝试#xff0c;还是能够提供类似的简洁调用。
Python 代码
s 0,11,336,23,370nums s.split(,)
for n in nums:print(n…概要
Python 的字符串天生支持 split( ) 操作支持单个字符或字符串作为分隔符。 C 在这方面显得很笨拙但是在 C20 下经过一番尝试还是能够提供类似的简洁调用。
Python 代码
s 0,11,336,23,370nums s.split(,)
for n in nums:print(n)print(---)items s.split(11,)
for i in items:print(i)基于 C20 的实现
使用了 std::string_view, 避免了原始字符串的拷贝使用了组合而不是继承的方式把 split( ) 函数与原始的字符串 str 进行组合也就是分别作为 MyString 类的成员函数和数据成员 class MyString {
private:std::string data;public:MyString(const std::string str) : data(str) {}MyString(std::string str) : data(std::move(str)) {}MyString(const char* str) : data(str) {}// 提供 split 方法std::vectorstd::string split(const std::string delimiter) const {std::vectorstd::string result;size_t start 0;size_t end 0;while ((end data.find(delimiter, start)) ! std::string::npos) {result.emplace_back(data.substr(start, end - start));start end delimiter.length();}result.emplace_back(data.substr(start)); // 添加最后一部分return result;}// 提供 std::string 的接口const std::string str() const { return data; }operator const std::string() const { return data; } // 隐式转换为 std::string
};
调用代码 - C
int main() {MyString s(0,11,336,23,370);// 按 , 分割auto nums s.split(,);for (const auto n : nums) {std::cout n \n;}std::cout ---\n;// 按 11, 分割auto items s.split(11,);for (const auto i : items) {std::cout i \n;}return 0;
}总结
本文从 Python 简洁的字符串split操作出发在 C20 的限定条件下通过组合 std::string 和 split( ) 函数以及使用 std::string_view, 实现了类似 Python 的简洁 API 调用。