none
std::transform 乱码 RRS feed

  • 问题

  • {
    //std::locale::global(std::locale("chinese_china.936"));
    std::string szPathNew("E:\\A新建文件夹(副本)");
    std::string szPathTmp;
    szPathTmp.resize(szPathNew.size());
    std::transform(szPathNew.begin(), szPathNew.end(), szPathTmp.begin(), tolower);//结果:e:\a新建文件夹(副本)
    }

    {
    //std::locale::global(std::locale("chinese_china.936"));
    std::wstring szPathNew(L"E:\\A新建文件夹(副本)");
    std::wstring szPathTmp;
    szPathTmp.resize(szPathNew.size());
    std::transform(szPathNew.begin(), szPathNew.end(), szPathTmp.begin(), tolower);//结果:e:\a新建文件9o,
    }

    std::transform 在使用宽字节进行转换的时候发现是乱码?请问这是什么问题?

    vs版本:vs2017 Profession(15.9.14)

    解决方案:

    Windows SDK Version:7.0

    Platform Toolset:Visual Studio 2017 - Windows XP (v141_xp)


    • 已编辑 Neko_NoW 2019年8月7日 7:08
    2019年8月7日 7:06

答案

全部回复

  • std::string模式和std::wstring模式下,szPathNew.size()分别是几。
    2019年8月7日 7:40
  • 你好,

    感谢你在MSDN论坛发帖。

    你是怎么显示这个数值的呢,可能你显示的方法转换了这个数值导致出现了乱码,std::transform转换的过程在我这边测试并没有出现乱码,并且我的()是可以正常显示的。你可以在代码运行过程中插入断点,看看szPathTmp的内容是否有乱码。

    Best Regards,

    Suarez Zhou

    2019年8月7日 8:19
  • 你好,

    请问你的问题解决了吗?如果解决了,可以分享一下你的解决方案吗,或者标记有价值的回复为正确答案,这会帮助其他有相同问题的社区成员更快地找到答案。如果没有,欢迎你随时提问。谢谢。

    Best Regards,

    Suarez Zhou


    2019年8月8日 2:10
  • 你是怎么显示这个数值的呢,可能你显示的方法转换了这个数值导致出现了乱码,std::transform转换的过程在我这边测试并没有出现乱码,并且我的()是可以正常显示的。你可以在代码运行过程中插入断点,看看szPathTmp的内容是否有乱码。


    既然你那边测试并没有出现乱码,那么也就没有原来的问题,同样也没有解决方案可分享了。
    2019年8月8日 2:41
  • 你好,

    感谢你在MSDN论坛发帖。

    你是怎么显示这个数值的呢,可能你显示的方法转换了这个数值导致出现了乱码,std::transform转换的过程在我这边测试并没有出现乱码,并且我的()是可以正常显示的。你可以在代码运行过程中插入断点,看看szPathTmp的内容是否有乱码。

    Best Regards,

    Suarez Zhou

         您好,

         如果我对代码设置了

        setlocale(LC_ALL, "chs"); 或 setlocale(LC_ALL, ""); 或 setlocale(LC_ALL, "chs"); 或 setlocale(LC_ALL,"chinese-simplified");

        则会出现乱码

    2019年8月8日 3:15
  • 之所以出现乱码是因为你的代码写错了。string对应tolower,wstring对应towlower。
    • 已标记为答案 Neko_NoW 2019年8月9日 1:59
    2019年8月8日 5:30
  • 参考如下资料:宽字符转换

    tolower与towlower用法的区别

    • 已标记为答案 Neko_NoW 2019年8月9日 1:59
    2019年8月8日 6:34
  • 谢谢啦~~~~~~~~~
    2019年8月9日 1:59
  • 谢谢哦~~~~~~~
    2019年8月9日 1:59