C++ 将浮点值强制转换为wchar\t win32
这让我很害怕,我找不到任何方法来向wchar_t投掷浮子,或者可能我找错了地方C++ 将浮点值强制转换为wchar\t win32,c++,windows,winapi,visual-studio-2012,C++,Windows,Winapi,Visual Studio 2012,这让我很害怕,我找不到任何方法来向wchar_t投掷浮子,或者可能我找错了地方 float cNumbers[9] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}; float x = 3.0; float temp = 0.0; wchar_t data[] = {0}; for(int i=0; i < sizeof(cNumbers); i++){ temp = x / cNumbers[i
float cNumbers[9] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0};
float x = 3.0;
float temp = 0.0;
wchar_t data[] = {0};
for(int i=0; i < sizeof(cNumbers); i++){
temp = x / cNumbers[i];
bool isInt = temp == static_cast<int>(temp);
if(isInt){
data = temp; //this is a big fail
addToList(hWnd,data);
}
}
void addToList(HWND hWnd,const wchar_t * data ){
SendMessage(GetDlgItem(hWnd,IDC_LISTBOX),LB_ADDSTRING,0,(LPARAM)data);
}
float cNumbers[9]={1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0};
浮动x=3.0;
浮子温度=0.0;
wchar_t data[]={0};
对于(int i=0;i
问题是,我想把浮点值转换成WCARGYT,将它发送到ListBox < P> C++中,铸造POD会将二进制数据重新解释为类型化,而不做要完成的类型转换。 您在这里有几个选项:
- 您可以使用
进行类似cast的转换boost::lexical_cast
- 您可以使用
或wsprintf
处理从浮点到宽字符串的转换std::wstringstream
- 如果您使用的是MFC/ATL,那么可以使用CString::Format将浮点转换为字符串
第二个选项是唯一一个不使用第三方库的选项,因此,如果您在使用库方面受到限制,则只能使用
wsprintf
或std::wstringstream。在这种情况下,通常我的建议是使用std::wstringstream以实现类型安全和防止缓冲区溢出。已经有了一个答案:
只需使用:
float x = 0.0f;
std::wostringstream woss;
woss << x;
std::wstring ws = woss.str();
const wchar_t* cwc = ws.c_str();
std::vector<wchar_t> buf( cwc , cwc + (ws.size() + 1) );
wchar_t* x2 = &buf[0];
float x=0.0f;
std::wostringstream-woss;
woss与VS2012一起使用时,您还可以使用std::to_wstring(x)
转换为wstring
。可能的重复