0
我想通過C++中的stringstream :: str()來分配std :: string * ptr。 我下面有一堂課。在C++中通過stringstream :: str()分配字符串指針時出現分段錯誤
class A{
public:
A():ptr(nullptr){
}
void read(string& filename){ // this file contains a text.
std::ifstream ifs(filename);
std::stringstream ss;
ss << ifs;
*ptr=ss.str();
ifs.close();
}
private:
std::string *ptr;
};
int main(void){
A a();
std::string file="./file";
a.read(file);
return 0;
}
我預計「* ptr」可以由文本分配。 但是,分段錯誤發生在* ptr = ss.str()。 我該怎麼做? 我認爲追加時間對象是下面的一種方法。
//instead of *ptr=ss.str();
std::string str=ss.str();
ptr = &str;
但我不想創建時間對象。 謝謝
您正在取消引用單位指針。那就是問題所在。 – gudok
其實我已經在這裏創建了這樣的ctor。即使我通過nullptr初始化ptr,也會發生分段錯誤。 – mallea