从文件中删除行

时间:2016-12-18 15:40:46

标签: c++ fstream

编译器出错:

Unhandled exception at 0x7486A832 in Nowy.exe: Microsoft C++ 
exception: std::out_of_range at memory location 0x00B3F2F4.

在重新布局之后,这似乎是一个错误:

if (plik.good() == true)
{
    int number_of_lines = 0;
    string line;
    while (std::getline(plik, line))
    {
        if (number_of_lines == deleteLineNumber)
        {
            line.replace(0,line.length(), ""); // <--------- HERE IS ERROR
            //cout << "Line has been deleted!";
            break;
        }

        ++number_of_lines;
    }
}

我在哪里弄错了? 这段代码应该从文件中删除一行

1 个答案:

答案 0 :(得分:0)

当您尝试访问已分配的空间(在STL容器中)之外的内存时,

std::out_of_range是一个例外。在这种特殊情况下,您正在访问尚未分配的std::string区域:

尝试将line[0]替换为line.begin(),将line.length()替换为line.end()

line.replace(line.begin(),line.end(), "");

如果您想完全删除该行,请尝试:

line.erase(line.begin(), line.end());