wchar_t str[20];
InputBox(str, 10, L"請輸入單詞數");
set_num=_wtoi(str);

因為我的專案許多函式都在多字符集下才能用,但是這個函式只能在UNICODE下才能用,請問在一個專案中怎么解決這個錯誤。
uj5u.com熱心網友回復:
或者說,怎么在一個專案一段代碼中用了undef UNICODE 后 再在專案的另一段代碼中使用UNICODE。uj5u.com熱心網友回復:
或者說,怎么在多字符集下撰寫一個輸入框。。uj5u.com熱心網友回復:
整兩個wchar_t和char的相互轉換函式不就得了。std::wstring char2wchar(const char* c, size_t m_encode/* = CP_ACP*/)
{
std::wstring str;
int len = ::MultiByteToWideChar(m_encode, 0, c, strlen(c), NULL, 0);
wchar_t* m_wchar = new wchar_t[len + 1];
::MultiByteToWideChar(m_encode, 0, c, strlen(c), m_wchar, len);
m_wchar[len] = '\0';
str = m_wchar;
delete m_wchar;
return str;
}
std::string wchar2char(const wchar_t* wp, size_t m_encode/* = CP_ACP*/)
{
std::string str;
int len = ::WideCharToMultiByte(m_encode, 0, wp, wcslen(wp), NULL, 0, NULL, NULL);
char *m_char = new char[len + 1];
::WideCharToMultiByte(m_encode, 0, wp, wcslen(wp), m_char, len, NULL, NULL);
m_char[len] = '\0';
str = m_char;
delete m_char;
return str;
}
那函式使用,改成如下類似:
char* str= "請輸入單詞數";
string s = char2wchar(str);
char str1[20];
InputBox(str1, strlen(s)+1, s.c_str);
uj5u.com熱心網友回復:
老哥,先mark一下,明天我試試。uj5u.com熱心網友回復:
@little_cat123 老哥你這個用不了啊。。
uj5u.com熱心網友回復:
string本質是char* 來的,用char2wchar 回傳的是wstring(本質是wchar_t*) 。inputBox函式的字符變數都是char*,我以為你是用wchar_t*去宣告字串。如果你直接用char* 的話。就不需要轉換函式了。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/15818.html
標籤:工具平臺和程序庫
下一篇:代碼敲著敲著,編譯器突然閃退
