必会的C++字符串操作使用 find_first_not_of 拆分数值和单位
一、背景
这里我们需要拆分一个 wstring 类型的字符串,比如 22.33mm ,我们需要将前面的数值部分 22.33 与单位部分 mm 拆开,分别存储。
二、方法:使用
1. find_last_not_of
find_last_not_of
函数来查找字符串中最后一个不匹配指定字符集的位置。
具体解释如下:
find_last_not_of
函数是std::wstring
类的成员函数,用于在字符串中从后往前查找第一个不在指定字符集内的字符。- 函数的参数是一个表示字符集的字符串。我们可以传递了
L"0123456789."
作为参数,表示数字和点号。这意味着函数将查找最后一个不是数字和点号的字符。 find_last_not_of
函数返回一个位置索引,指示找到的字符在字符串中的位置。如果找不到匹配的字符,函数将返回std::wstring::npos
。
2. find_first_not_of
find_first_not_of
函数是C 的字符串查找函数,用于从字符串的起始位置开始查找第一个不在指定字符集内的字符。下面是find_first_not_of
函数的用法:
size_t find_first_not_of(const std::wstring& str, size_t pos = 0);
参数说明:
str
:要在其中查找的字符串。pos
:要开始查找的位置,默认为0,即从字符串的起始位置开始查找。
返回值:
- 如果找到了第一个不在指定字符集内的字符,则返回该字符在字符串中的位置索引。
- 如果没有找到不在指定字符集内的字符,则返回
std::wstring::npos
。
所以我们可以使用 find_first_not_of
函数用于查找单位部分的起始位置。通过找到第一个不是数字和点号的字符,我们可以确定单位部分的开始位置,并从该位置开始提取单位部分,该位置之前就是数值部分。
具体代码如下所示:
#include <iostream>
#include <string>
int main() {
std::wstring input = L"22.33mm";
// 查找单位部分的起始位置
size_t unitPos = input.find_first_not_of(L"0123456789.");
// 提取数值部分和单位部分
std::wstring numberPart = input.substr(0, unitPos);
std::wstring unitPart = input.substr(unitPos);
// 输出结果
std::wcout << L"数值部分: " << numberPart << std::endl;
std::wcout << L"单位部分: " << unitPart << std::endl;
return 0;
}
这样就可以成功拆分出数值部分: 22.33 和 单位部分: mm 。
其中:substr()
是用于从一个字符串中提取子字符串的函数。
substr()
函数有两个版本:
- 使用两个参数的版本:
substr(pos, len)
,其中pos
是起始位置,len
是要提取的子字符串长度。返回从pos
开始的长度为len
的子字符串。上面的std::wstring numberPart = input.substr(0, unitPos);
就是提取input("22.33mm");
中从0开始长度为unitPos的字符串,因为下标从0开始,所以所以mm的第一个m的位置unitPos,刚好就是前面22.33的长度。 - 使用一个参数的版本:
substr(pos)
,其中pos
是起始位置。返回从pos
开始一直到字符串末尾的子字符串。这里提取单位的操作input.substr(unitPos);
就是提取从mm的第一个m的位置unitPos到字符串末尾的子字符串。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgiifhg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13