Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 115
1

Исправить ошибки "cannot convert 'std::__cxx11::string'"

16.09.2018, 20:54. Показов 1108. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Часть кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        case IDC_BUTTON1:
        {
            float a = 0, b = 0, c = 0;
            std::size_t pos = 0;
            std::string buf;
            GetDlgItemText(hDlg, IDC_EDIT1, buf, 255);
            a = std::stof(buf, &pos);
            GetDlgItemText(hDlg, IDC_EDIT2, buf, 255);
            b = std::stof(buf, &pos);
            c = a + b;
            buf = std::to_string(c);
            SetDlgItemText(hDlg, IDC_EDIT3, buf);
            break;
        }
Ошибки:
Код
||=== Build: Release in dialogText (compiler: GNU GCC Compiler) ===|
C:\Users\W0LF\Dropbox\src\CPP\dialogText\main.cpp||In function 'BOOL DlgMain(HWND, UINT, WPARAM, LPARAM)':|
C:\Users\W0LF\Dropbox\src\CPP\dialogText\main.cpp|38|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'LPSTR' {aka 'char*'}|
C:\mingw32\i686-w64-mingw32\include\winuser.h|2358|note:   initializing argument 3 of 'UINT GetDlgItemTextA(HWND, int, LPSTR, int)'|
C:\Users\W0LF\Dropbox\src\CPP\dialogText\main.cpp|40|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'LPSTR' {aka 'char*'}|
C:\mingw32\i686-w64-mingw32\include\winuser.h|2358|note:   initializing argument 3 of 'UINT GetDlgItemTextA(HWND, int, LPSTR, int)'|
C:\Users\W0LF\Dropbox\src\CPP\dialogText\main.cpp|44|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'LPCSTR' {aka 'const char*'}|
C:\mingw32\i686-w64-mingw32\include\winuser.h|2356|note:   initializing argument 3 of 'WINBOOL SetDlgItemTextA(HWND, int, LPCSTR)'|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 2 second(s)) ===|
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2018, 20:54
Ответы с готовыми решениями:

No match for 'operator<' (operand types are 'std::__cxx11::string {aka std::__c
Имеем следующий код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка...

Std::string and std::wstring convert
случайно наткнулся на такую вот конвертацию std::string в std::wstring std::string text(&quot;text&quot;);...

ошибка в программе (cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*')
int main() { string fileName, currWord, currMax = &quot;&quot;; cin&gt;&gt;fileName; ...

3
86 / 85 / 4
Регистрация: 20.11.2016
Сообщений: 259
16.09.2018, 21:40 2
Очередной новичок в программировании WinAPI???
Несовместимые параметры. В программе buf имеет тип string. А в описании функции он должен иметь другой тип LPTSTR
C
1
2
3
4
5
6
7
UINT GetDlgItemText
(
    HWND hDlg,  // дескриптор диалогового окна
    int nIDDlgItem, // идентификатор элемента управления
    LPTSTR lpString,    // адрес буфера для текста
    int nMaxCount   // максимальная длина строки
);
Попробуй применить преобразование типов, написать (LPTSTR)buf что или (LPTSTR)&buf, точно не знаю)
1
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 115
16.09.2018, 22:00  [ТС] 3
Цитата Сообщение от Radikal_78 Посмотреть сообщение
Очередной новичок в программировании WinAPI???
Да, а что?

Ok, вписал приведение типов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        case IDC_BUTTON1:
        {
            float a = 0, b = 0, c = 0;
            std::size_t pos = 0;
            std::string buf;
            GetDlgItemText(hDlg, IDC_EDIT1, (LPSTR)&buf, 255);
            a = std::stof(buf, &pos);
            GetDlgItemText(hDlg, IDC_EDIT2, (LPSTR)&buf, 255);
            b = std::stof(buf, &pos);
            c = a + b;
            buf = std::to_string(c);
            SetDlgItemText(hDlg, IDC_EDIT3, (LPCSTR)&buf);
            break;
        }
Теперь программа компилируется и, даже, запускается. Но при нажатии на IDC_BUTTON1 просто закрывается без всяких сообщений об ошибках.
Вот полный текст проги:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include <string>
#include "resource.h"
 
HINSTANCE hInst;
HWND hDlg;
 
BOOL CALLBACK DlgMain(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_INITDIALOG:
    {
        SetDlgItemText(hDlg, IDC_EDIT1, "0");
        SetDlgItemText(hDlg, IDC_EDIT2, "0");
        SetDlgItemText(hDlg, IDC_EDIT3, "0");
    }
    return TRUE;
 
    case WM_CLOSE:
    {
        DestroyWindow(hDlg);
        ExitProcess(0);
    }
    return TRUE;
 
    case WM_COMMAND:
    {
        switch(LOWORD(wParam))
        {
        case IDC_BUTTON1:
        {
            float a = 0, b = 0, c = 0;
            std::size_t pos = 0;
            std::string buf;
            GetDlgItemText(hDlg, IDC_EDIT1, (LPSTR)&buf, 255);
            a = std::stof(buf, &pos);
            GetDlgItemText(hDlg, IDC_EDIT2, (LPSTR)&buf, 255);
            b = std::stof(buf, &pos);
            c = a + b;
            buf = std::to_string(c);
            SetDlgItemText(hDlg, IDC_EDIT3, (LPCSTR)&buf);
            break;
        }
        case IDC_BUTTON2:
        {
            SendMessage(hDlg, WM_INITDIALOG, 0, 0);
            break;
        }
        }
    }
    return TRUE;
    }
    return FALSE;
}
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInst = hInstance;
    MSG msg;
    InitCommonControls();
    hDlg = CreateDialog(hInst, DLG_MAIN, NULL, (DLGPROC)DlgMain);
    if (!hDlg)
    {
        MessageBox(NULL, "Failed creation dialog", "Error", MB_OK);
        ExitProcess(1);
    }
 
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!IsDialogMessage(hDlg, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
    return msg.wParam;
}
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
16.09.2018, 22:26 4
C++ (Qt)
1
(LPSTR)&buf.c_str();
1
16.09.2018, 22:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2018, 22:26
Помогаю со студенческими работами здесь

Ошибка Cannot convert std::string to void*
Не могу сконвертировать строку в void*: std::string str; (void*)str; Вернее invalid cast from...

cannot convert parameter 1 from 'int' to 'std::string &'
string kolvo(string &amp;S, int &amp;k) { unsigned int i; for(i=1; i&lt;S.length(); i++) if(S=='B' &amp;&amp;...

Перегрузка операторов: cannot convert ‘std::string’ to ‘char*’
Пацаны, помогите. В шараге задали реализовать оператор скобок (). Код сильно сокращен, ибо слишком...

Ошибка при компиляции std::__cxx11::basic_string<char
День добрый возникла необходимость собрать одну старую программу написанную ещё во времена GCC4x...

Ошибки Cannot convert и Statement missing. Как исправить?
Друзья, помогите, пожалуйста! Очень срочно нужно. В C++ очень недавно, поэтому ошибки могут быть...

Ошибка при компиляции "Cannot convert `std::string' to `const char*"
Подскажите пожалуйста.Компилятор указывает на 13-ой позиции на ошибку типа: cannot convert...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru