将std :: basic_string分配给字符串

时间:2014-09-30 14:14:22

标签: c++ string casting stdstring

我的代码中有以下现有类:

struct Aclass {
    typedef std::string TitleType;
    TitleType title;
    typedef std::size_t NumType;
    NumType some_num;
};

Aclass实例化后,假设为aclass,我将aclass.title设置为程序中的某个字符串。在不同的功能中,我想执行以下操作:

NumType new_num;
std::string new_string;

new_num = aclass.some_num;  // this works, verified by print statement
new_string = aclass.title;  // this doesn't work

typeid(aclass.title)按预期提供basic_string类型,但new_string的分配导致我的程序崩溃。我该如何正确地完成这项任务?是否需要进行一些转换才能从basic_string过渡回string

1 个答案:

答案 0 :(得分:0)

您是否将a.title设置为NULL或0,而不是“”。当您尝试分配字符串时,这会导致崩溃。

字符串是(见http://www.cplusplus.com/reference/string/string/):

typedef basic_string<char> string;

是一个char类型的basic_string的模板实例化。如果您只在代码中引用std :: string,则无需转换。

除此之外,我建议使用调试器,例如gdb或ddd来捕获错误。