我目前正在编写和操作MASSIVE文本文件(180 + Mb)。 我试图想出一个内存架构来处理这些数据。
bigfile.txt是\ r \ n分隔的字符串列表。
我目前的想法是预先形成:
std::string str;
std::ifstream in2("bigfile.txt", std::ios::binary);
if (in2.is_open())
{
in2.seekg(0, std::ios::end);
str.reserve(in2.tellg());
in2.seekg(0, std::ios::beg);
str.assign((std::istreambuf_iterator<char>(in2)),
std::istreambuf_iterator<char>());
}
for(size_t i = 0; i < str.size();i++)
{
if (str[i] == '\r')
{
str[i] = 0;
}
}
然后我浏览列表并将char *的向量映射到字符串。
这种设计是否有任何缺陷?
只要我不删除char *,我就不应该泄漏任何内存吗?因为字符串会松动范围并清除它是否正确?