Вывод строки в Pdcurses

я использую pdcurses в C ++ для программирования игры и у меня возникли некоторые проблемы при попытке вывести строку.

В основном соответствующая программа выглядит так:

class Bunny {
private:
string name;
public:
string bgetname() { return name;};
}

class Troop {
private:
vector<Bunny> bunpointer;  // bunpointer is a pointer to different bunnies
public:
string getname(int i) {return bunpointer[i].bgetname();};
}

/* I create some bunnies in the troop which is pointed by bunpointer
* troop is in class Troop
*/

int main() {
Troop troop; // there will be 5 bunnies in the troop at the beginning
initscr();
// .....

mvprintw(17,0,"%s was created!",troop.getname(1)); // <---- where problem is

// .....
}

Программа должна выводить имена кроликов в отряде, но на самом деле выводит некоторые случайные символы, такие как < или же u или же @….

Я думаю, что troop.getname в main() могут возникнуть проблемы с указанием правильной памяти, в которой хранятся имена кроликов, поэтому на выходе появляются нерегулярные символы. Но я не могу понять, почему, потому что я чувствую, как цепь mvprintw—>troop.getname()—>bunpointer.bgetname это просто …

-3

Решение

Я никогда не использовал pdcurses, но похоже, что mvprintw похож на printf. Таким образом,% s означает, что вы передаете ему строку в стиле c (const char *), но вы даете ей std :: string. Попробуйте вызвать функцию c_str для вашей std :: string:

mvprintw(17,0,"%s was created!",troop.getname(1).c_str());
1

Другие решения


По вопросам рекламы [email protected]