【问题标题】:how to rtrim wchar_t using specific unicode codepoint?如何使用特定的 unicode 代码点 rtrim wchar_t?
【发布时间】:2012-06-06 15:31:42
【问题描述】:

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

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

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

我有什么选择?有没有类似:wsrtrim(input,char_code)

【问题讨论】:

  • const wchar_t *mystring = L""; 中的 const 是必需的,因为指针可能指向只读内存,但是如果您使用数组而不是指针,则不需要 const:wchar_t mystring [] = L""; 因为那语法创建并初始化一个具有正常自动存储持续时间的数组。

标签: c++ trim wchar-t


【解决方案1】:

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(假设您将其设为非const)。

【讨论】:

    【解决方案2】:
    #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"й");
    }
    

    【讨论】:

      【解决方案3】:

      StrTrimW()

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

      艺术

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-21
        • 2011-11-02
        • 1970-01-01
        • 2018-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多