string 和 wstring 互相转换的方法(即 Ansi & Unicode 在标准库下的互转)

注意一点:在控制台工程中不能使用MFC的东西。若要使用,就要把


的库设置成共享dll库;

                在控制台中一般不这么用,如果要用,还要加入头文件。但有时候会报出windows,h 重复包含的一个错误。

                应该注意区分控制台工程和MFC工程的区别, 控制台工程,使用的是标准的windows库,即常说标准C++库文件。而 MFC 使用的是MFC的库,两者有根本区别的;

以下是 std::string 和 std::wstring 互相转换的方法:(即 Ansi & Unicode在标准库下的互转)

1、StringToWString

BOOL StringToWString(const std::string &str,std::wstring &wstr)

{    

    int nLen = (int)str.length();    

    wstr.resize(nLen,L' ');

    int nResult = MultiByteToWideChar(CP_ACP,0,(LPCSTR)str.c_str(),nLen,(LPWSTR)wstr.c_str(),nLen);

    if (nResult == 0)

    {

        return FALSE;

    }

    return TRUE;

}

2、WStringToString

 // string高字节不为0,返回FALSE

BOOL WStringToString(const std::wstring &wstr,std::string &str)

{    

    int nLen = (int)wstr.length();    

    str.resize(nLen,' ');

    int nResult = WideCharToMultiByte(CP_ACP,0,(LPCWSTR)wstr.c_str(),nLen,(LPSTR)str.c_str(),nLen,NULL,NULL);

    if (nResult == 0)

    {

        return FALSE;

    }

    return TRUE;

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值