文本文件读取丢失格式与减速

时间:2017-03-16 17:34:11

标签: file text stream formatting

我一直试图解决这个问题。

阅读文本文件。

使用此代码将格式化替换为getline ...但加载文件的时间太长了......

    std::string line = "";
    std::string file = "";
    std::ifstream filepath(path);

    if (filepath.is_open())
    {
        while (std::getline (filepath,line) )
        {                   
        file = file + line  + "\r\n";
        }

        filepath.close();
    }

使用此代码加载文件的时间大约快10倍,但格式化丢失了:

        std::ifstream in(path);
        std::stringstream stream;

        stream << in.rdbuf();

        std::string file(stream.str());

是否有可能通过第一种方法的格式化来获得第二种方法的速度?或者更好但速度更快,格式没有变化?

我曾考虑过不要在循环中的每个getline的第一个示例中继续加载相同的字符串,但早期尝试似乎没有帮助。

1 个答案:

答案 0 :(得分:0)

好的再次检查后,不确定这是什么叫但是这个字符串优化处理了延迟和格式化......哇!

如果有人知道如何让它更快,我很乐意学习......

    std::string line = "";
    std::string file = "";
    std::string tmp_str = "";
    std::ifstream filepath(path);
    unsigned int c = 0;

    if (filepath.is_open())
    {
        while (std::getline (filepath,line) )
        {
            tmp_str = tmp_str + line + "\r\n";
            c++;
            if (c > 100)
            {
                file = file + tmp_str;
                tmp_str = "";
                c = 0;
            }
        }

        if (c != 0) 
        {
            file = file + tmp_str;
        }

        filepath.close();