【发布时间】:2012-05-19 19:47:39
【问题描述】:
有没有人处理过在 MBCS 中使用 std::string 函数的问题?例如在 C 中我可以这样做:
p = _mbsrchr(path, '\\');
但在 C++ 中我正在这样做:
found = path.find_last_of('\\');
如果尾字节是斜线,那么 find_last_of 会在尾字节处停止吗? std::wstring 也是同样的问题。
如果我需要用另一个字符替换所有字符,请说所有正斜杠都带有反斜杠,那么正确的方法是什么?我是否必须检查每个字符的前导代理字节然后跳过线索?现在我正在为每个 wchar 执行此操作:
if( *i == L'/' )
*i = L'\\';
谢谢
编辑:正如 David 正确指出的那样,在使用多字节代码页时需要处理更多。 Microsoft says use _mbclen 用于处理字节索引和 MBCS。在使用 ANSI 代码页时,我似乎无法可靠地使用 find_last_of。
【问题讨论】:
标签: c++ windows string utf-16 mbcs