Ошибка ISO C++ forbids converting a string constant to LPSTR

Хочу создать строку с типом LPSTR, чтобы менять ее во время работы программы, а потом преобразовать в LPCSTR (это для передачи последнего аргумента в функцию CreateFont).

Создаю вот так строку:

LPSTR currFontd = "Arial";

Выходит такая ошибка во время компиляции:

17:25:22,75 [C] #>g++ -mwindows window.cpp -o out.exe                                                                 
window.cpp:20:19: warning: ISO C++ forbids converting a string constant to 'LPSTR' {aka 'char*'} [-Wwrite-strings]         
20 | LPSTR currFontd = "Arial";  

Что не так делаю? Может можно использовать другую строку, чтобы потом можно было передать в эту функцию?


Ответы (1 шт):

Автор решения: Harry

Вы по сути делаете

char * currFontd = "Arial";

Получается, что вы намерены (может, и нет, но требуете у компилятора такого права) изменить строковый литерал, например,

currFontd[0] = 'Q';

Литерал же — строка неизменяемая, и вы не можете обращаться с ней иначе как с константной, через const char * или, что то же LPCSTR.

Работайте или сразу с LPCSTR, или с копией литерала —

char currFontd[] = "Arial";

или там

string currFontd = "Arial";
→ Ссылка