Como posso exibir strings variáveis usando C ++ e PDCurses?
Pergunta
Sinto muito por postar uma pergunta tão embaraçosamente nova, mas não estou muito com C ++ desde os meus dias de faculdade e acho que em algum momento bebi tudo o que sabia sobre ponteiros e cordas de C ++ logo de cabeça. Basicamente, estou criando um aplicativo de console C ++ (uma bike roguel, para ser mais preciso) com PDCurses para lidar com a saída. Quero exibir strings dinâmicos (algo que eu acho que seria bastante útil em um jogo dinâmico, heh), mas o mvaddr () continua me jogando erros. Aqui está um exemplo do que estou tentando fazer:
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();
Claro, isso me dá uma "conversão inválida de const char*' to
Char *'"Erro na definição de char *pvers. Eu sei que estou fazendo algo de maneira realmente descarada, estupidamente errado aqui, mas estou realmente enferrujado com isso. Qualquer ajuda seria super útil.
Solução
Apenas declare pvers
Como:
const char *pvers = vers.c_str();
este const
significa que você não vai modificar a memória apontada por pvers
. É realmente mais uma dica para que o compilador possa gritar com você se você quebrar essa suposição. (É por isso que você recebeu o aviso do compilador.) Você pode começar a ver algo descolado se usar pvers
Depois de mudar vers
Além dessa linha, mas para o snippet que você postou, não vejo esse problema.
Outras dicas
Asveikau está certo, mas encontrei outra opção pesquisando em algumas documentações de Ncurses - eu sempre poderia apenas mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers)
pelo mesmo efeito.