Pdcurses中的字符串输出

时间:2014-05-17 19:10:21

标签: c++ string pdcurses

我在C ++中使用 pdcurses 来编写游戏并在尝试输出字符串时遇到一些问题。

基本上相关的程序是这样的:

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 ---&gt; troop.getname() ---&gt; bunpointer.bgetname很简单......

1 个答案:

答案 0 :(得分:1)

我从未使用过pdcurses,但看起来mvprintw与printf类似。所以%s意味着你传递了一个c风格的字符串(const char *),但你给它一个std :: string。尝试在std :: string上调用c_str函数:

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