[英]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.