0. 简介

在使用C++进行字符串操作时,诸如拆分(split)、拼接(join)以及去除空白字符(strip)等操作相对繁琐。为了解决这一问题,我开发了PString,一个模仿Python内置str类型行为的C++库,以更直观、便捷地处理字符串操作。

仓库地址:https://github.com/EPTansuo/PString

1. 使用样例

PString实现了Python中str类型的所有方法,示例如下:

#include <iostream>
#include <pstring.h>

int main(){
    PString str = "  Hello, World!  ";

    // Python风格的split操作
    auto str_split = str.split(",");
    std::cout << str_split[0].upper() << std::endl;
    
    // Python风格的join操作
    auto str_joined = PString(":").join(str_split);
    std::cout << str_joined << std::endl;

    // Python风格的slice操作
    auto str_sliced = str.slice(6, 1, -1);
    std::cout << str_sliced << std::endl;

    // Python风格的strip操作
    auto str_stripped = str.strip();
    std::cout << str_stripped << std::endl;
}

2. 功能验证与测试

为了确保PString的功能准确性,我通过pybind11将C++实现的PString绑定至Python环境,再与Python原生str类型进行功能对比测试。

具体对比测试代码位于difftest/test.py中,如下所示:

...
difftest(test_str, py_str.upper(), ps_str.upper(), "upper")
...

局限性

当前的PString实现本质上是对std::string进行增强,底层为单字节操作,因此尚不支持Unicode字符处理。这意味着目前版本无法处理多字节的UTF-8编码字符。目前尚未有支持Unicode的打算。