c ++具有char *和陷阱的大文件性能

时间:2017-09-14 03:00:13

标签: c++ string text memory-management char

我目前正在编写和操作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 *,我就不应该泄漏任何内存吗?因为字符串会松动范围并清除它是否正确?

0 个答案:

没有答案