Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将浮点值强制转换为wchar\t win32_C++_Windows_Winapi_Visual Studio 2012 - Fatal编程技术网

C++ 将浮点值强制转换为wchar\t win32

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

这让我很害怕,我找不到任何方法来向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];
    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会将二进制数据重新解释为类型化,而不做要完成的类型转换。 您在这里有几个选项:

  • 您可以使用
    boost::lexical_cast
    进行类似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
。可能的重复