簡體   English   中英

Char轉換為int?

[英]Char to int conversion?

我試圖從3個編輯框中獲取rgb值,以便我可以在運行時更改窗口的顏色。 以下代碼沒有給出我需要的數值。

        const int bufferSize = 1024;
        char fade1Buffer[bufferSize] = "";
        char fade2Buffer[bufferSize] = "";
        char fade3Buffer[bufferSize] = "";

        HWND Editbox1 = GetDlgItem(hWnd,IDC_MAINFADE1_EDIT); 
        SendMessage(Editbox1, WM_GETTEXT, (WPARAM)bufferSize, (LPARAM)fade1Buffer);
        HWND Editbox2 = GetDlgItem(hWnd,IDC_MAINFADE2_EDIT);
        SendMessage(Editbox2, WM_GETTEXT, (WPARAM)bufferSize, (LPARAM)fade2Buffer); 
        HWND Editbox3 = GetDlgItem(hWnd,IDC_MAINFADE3_EDIT);
        SendMessage(Editbox3, WM_GETTEXT, (WPARAM)bufferSize, (LPARAM)fade3Buffer);

        //fill our main window background
        FadeVert(hWnd, RGB(fade1Buffer, fade2Buffer,fade3Buffer), RGB(255, 255, 255), (int) Client_Rect.top, 
            (int) Client_Rect.left, (int) Client_Rect.right, (int) Client_Rect.bottom);

atoi()函數將char *轉換為int。 它在<cstdlib>

int atoi ( const char * str );

在這種情況下,

int i = atoi(fade1Buffer);

另見, strtol()為@Keith Thompson和@Chris提到的。 它使用起來有點困難,但它可以更好地處理錯誤。

   char * pEnd;
   long int i = strtol(fade1Buffer,&pEnd, 10);//10 is the base (decimal in this case)
   //pEnd == fade1Buffer if there is an error.

如果將其轉換為C ++樣式的std :: string,也可以使用其他幾個函數

#include <string>
std::string str(fade1Buffer);
int i = stoi(test);

參考: http//en.cppreference.com/w/cpp/string/basic_string/stol

在Win32中有一個名為GetDlgItemInt的函數。 請參閱http://msdn.microsoft.com/en-us/library/windows/desktop/ms645485%28v=vs.85%29.aspx

這會將代碼行減少1/3,並將字符串轉換為數字的所有麻煩。 此外,你應該小心WM_GETTEXT的LPARAM。 如果您定義了UNICODE,那么該參數應該是wchar_t *而ANSI版本需要char *。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM