Как я могу отобразить переменные строки с использованием C ++ и PDCurses?

StackOverflow https://stackoverflow.com/questions/2163853

Вопрос

Мне очень жаль опубликовать такой смущающий новый вопрос, но я мало что забил с C ++ со времен в колледже, и я думаю, что в какой -то момент я выпил все, что знал о указателях и струнах C ++ прямо из моей головы. По сути, я создаю приложение консоли C ++ (точнее быть точным) с PDCurses для обработки вывода. Я хочу отобразить динамические строки (то, что я считаю, было бы довольно полезным в динамичной игре, хех), но mvaddstr () продолжает бросать мне ошибки. Вот пример того, что я пытаюсь сделать:

 string vers = "v. ";
 vers += maj_vers;// + 48;
 vers += ".";
 vers += min_vers;// + 48;
 vers += ".";
 vers += patch_vers;// + 48;
 char *pvers = vers.c_str();
 mvaddstr(5,17, pvers);
 refresh();

Конечно, это дает мне «недействительное преобразование из const char*' tochar *'«Ошибка в определении Char *pvers. Я знаю, что делаю что -то действительно наглое, глупо неправильное здесь, но я действительно ржавый. Любая помощь была бы очень полезной.

Это было полезно?

Решение

Просто заявьте pvers в качестве:

const char *pvers = vers.c_str();

Этот const означает, что вы не собираетесь изменять память, на которую указано pvers. Анкет Это действительно больше намека, так что компилятор может кричать на вас, если вы нарушите это предположение. (Вот почему у вас есть предупреждение компилятора.) Вы можете начать видеть что -то смешное, если используете pvers после изменения vers Помимо этой линии, но для фрагмента, который вы опубликовали, я не вижу этой проблемы.

Другие советы

Асвеикау прав, но я нашел другой вариант, выполнив поиск через некоторую документацию NCURSES - я всегда мог просто просто mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers) для того же эффекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top