我的代码中有以下现有类:
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
?
答案 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来捕获错误。