zoukankan      html  css  js  c++  java
  • WRT 下 C++ wstring, string, String^ 互转

    由于项目原因,需要引入C++。

    wstring 与 string 的互转研究了一段时间,坑主要在于使用下面这种方式进行转换,中文会乱码

    wstring ws = L"这是一段测试文字";
    string s;
    s.assign(ws.begin(), ws.end());

    因此采用了下面的方法将wstring 转为 string

                wstring wstr = L"这是一段测试文字";
                string str;
                int wstr_len = wstr.length();
                int str_len = wstr_len * sizeof(wchar_t);
                str.resize(str_len);
                int new_len = WideCharToMultiByte(CP_ACP,0,(LPCWSTR)wstr.c_str(),wstr_len,(LPSTR)str.c_str(),str_len,NULL,NULL);
                str.resize(new_len);

    类似的 string转为wstring 为

                int str_len = s.length();//这里的s是上述办法转下来的string
                wstring wstr;
                wstr.resize(str_len);
    
                int new_len = MultiByteToWideChar(CP_ACP,0,(LPSTR)s.c_str(),str_len,(LPWSTR)wstr.c_str(),str_len);
                wstr.resize(new_len);

    wstring 转为 String^ 的方法为

    auto ps = ref new String(wstr.c_str());

    String^ 转为 wstring 的方法为

    wstring wstr(ps->Data());
  • 相关阅读:
    Linux命令:ssh
    Linux命令:sshpass
    Linux命令:ls
    Linux文件的时间
    Linux命令:findutils
    jfrog
    git
    git branch
    git remote
    java equals 和hashcode
  • 原文地址:https://www.cnblogs.com/newcj/p/3645741.html
Copyright © 2011-2022 走看看