菜单

(鑫通态) string相关

下载

鑫通态HMI对string扩展操作

文件位置:util/StringUtil.h

cpp 复制代码
  #include "  util/StringUtil.h" //需要包含的头文件

1 string与其他类型数值装换(解决字符串类型错误导致程序崩溃)

1.1使用方法:

复制代码
  int ivalue = StringUtil::safeStoi("999"); //转整形
  float fvalue = StringUtil::safeStoi("888.888"); //转浮点
  .....

1.2所有方法:

cpp 复制代码
  static int safeStoi(const string& str);
  static bool safeStoi(const string& str, int& result);
  static float safeStof(const string& str);
  static bool safeStof(const string& str, float& result);
  static long long safeStoll(const string& str);
  static bool safeStoll(const string& str, long long& result);
  static double safeStod(const string& str);
  static bool safeStod(const string& str, double& result);

2 格式化输出string(类似c语言snprintf函数,用于将格式化后的字符串存储string中)

2.1使用方法:

cpp 复制代码
   string fmtstr = StringUtil::snprintf("衬衫的价格是%d镑%f便士",9,15.0);
   //打印输出 衬衫的价格是9镑15.000000便士

3 string正则表达式使用

1.1使用方法:

cpp 复制代码
 // 示例 1: 匹配纯数字字符串
    std::string reg1 = "^[0-9]+$";
    std::string str1 = "12345";
    if (StringUtil::match(reg1, str1)) {
        std::cout << "字符串 \"" << str1 << "\" 匹配正则表达式 \"" << reg1 << "\"。" << std::endl;
    } else {
        std::cout << "字符串 \"" << str1 << "\" 不匹配正则表达式 \"" << reg1 << "\"。" << std::endl;
    }

    // 示例 2: 匹配邮箱格式
    std::string reg2 = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
    std::string str2 = "example@example.com";
    if (StringUtil::match(reg2, str2)) {
        std::cout << "字符串 \"" << str2 << "\" 匹配正则表达式 \"" << reg2 << "\"。" << std::endl;
    } else {
        std::cout << "字符串 \"" << str2 << "\" 不匹配正则表达式 \"" << reg2 << "\"。" << std::endl;
    }

    // 示例 3: 匹配以字母开头,后跟数字的字符串
    std::string reg3 = "^[a-zA-Z][0-9]+$";
    std::string str3 = "A123";
    if (StringUtil::match(reg3, str3)) {
        std::cout << "字符串 \"" << str3 << "\" 匹配正则表达式 \"" << reg3 << "\"。" << std::endl;
    } else {
        std::cout << "字符串 \"" << str3 << "\" 不匹配正则表达式 \"" << reg3 << "\"。" << std::endl;
    }

    // 示例 4: 匹配日期格式(YYYY-MM-DD)
    std::string reg4 = "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$";
    std::string str4 = "2024-10-15";
    if (StringUtil::match(reg4, str4)) {
        std::cout << "字符串 \"" << str4 << "\" 匹配正则表达式 \"" << reg4 << "\"。" << std::endl;
    } else {
        std::cout << "字符串 \"" << str4 << "\" 不匹配正则表达式 \"" << reg4 << "\"。" << std::endl;
    }

4 字符集转换(UTF-8 GBK UCS-2BE, UCS-2LE EUC-CN, HZ, GB18030)

cpp 复制代码
    // 示例 1: UTF-8 转 GBK
    std::string utf8Str = "Hello, 世界";
    std::string gbkResult = StringUtil::trancoding("UTF-8", "GBK", utf8Str);
    if (!gbkResult.empty()) {
        std::cout << "UTF-8 转 GBK 结果: " << gbkResult << std::endl;
    }

    // 示例 2: GBK 转 UTF-8
    std::string gbkStr = "中文测试";  // 假设这里是 GBK 编码的字符串
    std::string utf8Result = StringUtil::trancoding("GBK", "UTF-8", gbkStr);
    if (!utf8Result.empty()) {
        std::cout << "GBK 转 UTF-8 结果: " << utf8Result << std::endl;
    }
最近修改: 2025-02-21Powered by