VS2010使用<string>的char* std::string::to_string(int|unsigned int|long|long long)等重载类型时无法判别的错误

//现象:
//使用C++标准库<string>字符串 当使用string::to_string(int)要将int转成string时提示重载函数调用冲突,
//即使强转string::to_string((int) myintnum)也不好使
//这是VC++的错误,IT屋有篇文章详细说明了情况[添加链接描述](http://www.it1352.com/468233.html)
//另[添加链接描述](https://blog.csdn.net/ganxinjiang/article/details/7338656)还给出了自己的解决办法
// Cto_sting_intDlg 消息处理程序

BOOL Cto_sting_intDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 将“关于...”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码
	//Debugin
	std::string mystring = "";
	int nCount = 99;
	mystring = std::to_string(static_cast<long long>(nCount));
	LPCTSTR mystr = (LPCTSTR)mystring.c_str(); //当项目采用Unicode字符集时 这里LPCTSTR就是wchar_t* 当用char*赋给wchar_t*后wchar_t*会以双字节Unicode字符去翻译从而得到错误的字符
	LPTSTR mystr3 = (LPTSTR)mystring.c_str();  //当项目采用多字节字符集时 编译检测到右值是char* 那左值的LPTSTR或LPCTSTR会相应变化为char*而不是wchar_t* 会正确翻译字符
	const char* mystr2 = NULL;
	mystr2 = mystring.c_str();
	LPCTSTR mystr4 = (LPCTSTR) mystr2; //当项目采用Unicode字符集时 这里LPCTSTR就是wchar_t* 当用char*赋给wchar_t*后wchar_t*会以双字节Unicode字符去翻译从而得到错误的字符串
	MYSTATIC.SetWindowText(mystr);
	//Debugout
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值