鑫通态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;
}
需要确认型号或具体项目?联系技术支持 ↗