【问题标题】:How can I get the byte size of std::wstring?如何获取 std::wstring 的字节大小?
【发布时间】:2012-03-05 22:18:15
【问题描述】:

我使用std::wstring 作为我的Unicode 样式字符串。现在我想得到 wstring 的字节大小。 如果我使用wstringsize() 方法,我只会得到字符总数 在我的wstring。但是字节应该是 size() * 2。 有没有官方的方法来获得这个字节大小?我不想用 size() * 2 在我的程序中.....

我想用RegSetValueExW 作为最后一个参数。

【问题讨论】:

    标签: c++ string winapi size wstring


    【解决方案1】:

    使用str.size() * sizeof(wchar_t) 或等效项。

    事实上,我想不出除了 Windows 之外的任何其他平台有 2 字节 wchar_t,4 字节更常见。

    【讨论】:

    • 如果您使用 RegSetValueExW 设置 REG_SZ,您还需要为空终止符添加一个字符:(str.size() + 1) * sizeof(wchar_t)
    【解决方案2】:

    为什么不:

    ( str.size() * sizeof(wchar_t) ) ;
    

    或者:

    ( str.size() * sizeof(std::wstring::traits_type::char_type) ) ;
    

    【讨论】:

    • sizeof(char)保证为1,不用除。
    • 是的,在任何符合标准的编译器 sizeof(char) == 1 中,我编辑了我的答案。
    【解决方案3】:
    std::wstring s = L"Howdy, world!";
    //...
    std::size_t bytes_count = s.size() * sizeof s[0];
    

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 返回字符数,而不是字节数,并且需要 C 样式指针,而不是 std::w/string。
      猜你喜欢
      • 2011-03-22
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 2015-10-09
      • 2017-09-18
      相关资源
      最近更新 更多