请问这个问题怎么在多字节字符集下解决

[复制链接]
查看11 | 回复6 | 2021-1-27 05:08:48 | 显示全部楼层 |阅读模式
wchar_tstr[20];
InputBox(str,10,L"请输入单词数");
set_num=_wtoi(str);


因为我的项目许多函数都在多字符集下才能用,但是这个函数只能在UNICODE下才能用,请问在一个项目中怎么解决这个错误。

分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
或者说,怎么在一个项目一段代码中用了undefUNICODE后再在项目的另一段代码中使用UNICODE。
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
或者说,怎么在多字符集下编写一个输入框。。
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
整两个wchar_t和char的相互转换函数不就得了。std::wstringchar2wchar(constchar*c,size_tm_encode/*=CP_ACP*/)
{
std::wstringstr;
intlen=::MultiByteToWideChar(m_encode,0,c,strlen(c),NULL,0);
wchar_t*m_wchar=newwchar_t[len+1];
::MultiByteToWideChar(m_encode,0,c,strlen(c),m_wchar,len);
m_wchar[len]='\0';
str=m_wchar;
deletem_wchar;
returnstr;
}
std::stringwchar2char(constwchar_t*wp,size_tm_encode/*=CP_ACP*/)
{
std::stringstr;
intlen=::WideCharToMultiByte(m_encode,0,wp,wcslen(wp),NULL,0,NULL,NULL);
char*m_char=newchar[len+1];
::WideCharToMultiByte(m_encode,0,wp,wcslen(wp),m_char,len,NULL,NULL);
m_char[len]='\0';
str=m_char;
deletem_char;
returnstr;
}
那函数使用,改成如下类似:
char*str="请输入单词数";
strings=char2wchar(str);
charstr1[20];
InputBox(str1,strlen(s)+1,s.c_str);
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
引用3楼little_cat123的回复:整两个wchar_t和char的相互转换函数不就得了。std::wstringchar2wchar(constchar*c,size_tm_encode/*=CP_ACP*/)
{
std::wstringstr;
intlen=::MultiByteToWideChar(m_encode,0,c,strlen(c),NULL,0);
wchar_t*m_wchar=newwchar_t[len+1];
::MultiByteToWideChar(m_encode,0,c,strlen(c),m_wchar,len);
m_wchar[len]='\0';
str=m_wchar;
deletem_wchar;
returnstr;
}
std::stringwchar2char(constwchar_t*wp,size_tm_encode/*=CP_ACP*/)
{
std::stringstr;
intlen=::WideCharToMultiByte(m_encode,0,wp,wcslen(wp),NULL,0,NULL,NULL);
char*m_char=newchar[len+1];
::WideCharToMultiByte(m_encode,0,wp,wcslen(wp),m_char,len,NULL,NULL);
m_char[len]='\0';
str=m_char;
deletem_char;
returnstr;
}
那函数使用,改成如下类似:
char*str="请输入单词数";
strings=char2wchar(str);
charstr1[20];
InputBox(str1,strlen(s)+1,s.c_str);
老哥,先mark一下,明天我试试。
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层


@little_cat123老哥你这个用不了啊。。
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
引用5楼Harris-H的回复:

@little_cat123老哥你这个用不了啊。。
string本质是char*来的,用char2wchar返回的是wstring(本质是wchar_t*)。inputBox函数的字符变量都是char*,我以为你是用wchar_t*去声明字符串。如果你直接用char*的话。就不需要转换函数了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行