2017-01-29 8 views
-2

Ich möchte von String zu Integer konvertieren, also habe ich atoi() in winapi wie folgt verwendet. wenn ich atoi Funktion zu verwenden, kam ich mit dieser Fehlermeldung überwin32 atoi Problem, das Argument 1 von 'wchar_t [5]' nicht konvertieren kann 'const char *

1>d:\work\usb\isp1\isp1\source1.cpp(771): error C2664: 'int atoi(const char *)' : cannot convert argument 1 from 'wchar_t [5]' to 'const char *' 
1>   Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 

Wie kann ich Zeichenfolge konvertieren integer?

HWND hEdit_a; 
HWND hEdit_d; 
wchar_t str_a[5]; 
wchar_t str_d[5]; 

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) 
{ 


    HDC hdc; 
    PAINTSTRUCT ps; 
    static HANDLE hTimer; 
    switch (iMessage) 
    { 
    case WM_CREATE: 

case ID_EDIT_A: 
     switch (HIWORD(wParam)) { 
     case EN_CHANGE: 
      GetWindowText(hEdit_a, str_a, 5); 
      //SetWindowText(hWnd, str_a); 
     } 
     break; 

.... 
case 4: //single i2c write 
      int ii; 
      int iii; 
      ii = atoi(str_a); 
      iii = atoi(str_d); 

      write_i2c() 
      break; 
+0

Warum in aller Welt rufen Sie diese Funktion an erster Stelle? Warum verwenden Sie nicht den idiomatischen Weg, um Text in Integer zu konvertieren? –

Antwort

0

atoi ist für const char * Saiten; Was Sie haben, ist eine wchar_t Zeichenfolge. char und wchar_t sind nicht austauschbar. Verwenden Sie die entsprechende Funktion für wchar_t Strings; _wtoi:

ii = _wtoi(str_a); 
iii = _wtoi(str_d); 
+0

Danke, aber ich habe die folgende Fehlermeldung 1> d: \ work \ usb \ isp1 \ isp1 \ source1.cpp (771): Fehler C3861: 'wtoi': Bezeichner nicht gefunden – foe1

+0

'_wtoi' nicht' wtoi' –

+0

@ foe1 Das ist vielleicht am besten, um eine neue Frage zu stellen. –

Verwandte Themen