Как я могу отобразить переменные строки с использованием C ++ и PDCurses?
Вопрос
Мне очень жаль опубликовать такой смущающий новый вопрос, но я мало что забил с 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*' to
char *'«Ошибка в определении 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)
для того же эффекта.