繁体   English   中英

如何使用特定的Unicode代码点rtrim wchar_t?

[英]how to rtrim wchar_t using specific unicode codepoint?

例如,我已经定义了这样的字符串:

const wchar_t mystring[] = L"зеленыйййййййййййййййййййййййй"

我需要将其更改为: зелены

我有什么选择? 是否有类似的内容: wsrtrim(input,char_code)

Nip: mystringconst ,不能更改。

如果您使用的是C ++,建议您使用STL的string (或在这种情况下,使用wstring )。 这样,您可以选择使用Boost或字符串的内置功能(对于Boost,使用任何类似STL的容器都可以):

std::wstring wstr(mystring);
boost::algorithm::trim_right_if(wstr, [](wchar_t wch) { return wch == L'й'; });
// or
size_t pos = wstr.find_last_not_of(L'й');
if (pos != std::wstring::npos)
   wstr.erase(pos + 1);
else
   wstr.clear();

之后,您还可以将wstr复制回mystring (假设您将其设为非常量)。

#include <iostream>
#include <string>

std::wstring wstrtrim(std::wstring const &w,std::wstring const &trim) {
    std::wstring::size_type first = w.find_first_not_of(trim);
    if (first!=std::wstring::npos)
      return w.substr(first, w.find_last_not_of(trim)-first+1);
    return L"";
}

int main() {
    const wchar_t mystring[] = L"зеленыйййййййййййййййййййййййй";
    std::wstring w = wstrtrim(mystring,L"й");
}

StrTrimW()

这就是替换wchar_t所需的全部。

艺术

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM