0
我從文件中大量記錄讀入一個std一個struct ::矢量這樣的:我怎樣的std ::字符串複製與的std :: string領域
std::fstream in("storage.txt", std::ios::in);
stxxl::vector<Citizen> v;
std::copy(std::istream_iterator<Citizen>(in), std::istream_iterator<Citizen>(), std::back_inserter(v));
的結構Citizen
是定義爲:
struct Citizen
{
std::string firstname, lastname;
int year;
};
即功能爲isteam_iterator
創建的:
std::istream& operator >>(std::istream& i, Citizen& c)
{
i >> c.firstname >> c.lastname >> c.year;
return i;
}
期間創建的網絡連接的第一個結構我得到一個分段錯誤。爲什麼?我知道,結構的字符串字段沒有足夠的空間。將類型更改爲char fieldname[some size]
可解決問題,但它是C風格,我不想使用它。
如何爲該示例分配空間?
沒有必要分配空間,'>>'會正確調整字符串的大小。問題在別的地方。你有'std :: vector'的問題嗎?你可以將問題簡化爲[最小但完整的測試用例](http://stackoverflow.com/help/mcve)?您是否使用過調試器來查看導致段錯誤的原因? –