gpt4 book ai didi

C++ vector::_M_range_check 错误?

转载 作者:可可西里 更新时间:2023-11-01 16:42:36 25 4
gpt4 key购买 nike

这是我的功能:

void loadfromfile(string fn, vector<string>& file){
int x = 0;
ifstream text(fn.c_str());
while(text.good()){
getline(text, file.at(x));
x++;
}
//cout << fn << endl;
}

我传入的 fn 的值只是一个文本文件的名称 ('10a.txt')我传入的文件的值声明如下:

vector<string> file1;

我没有定义大小的原因是因为我不认为我必须使用 vector ,它们是动态的……不是吗?

此函数应该读取给定的文本文件并将每行的全部内容存储到单个 vector 单元格中。

例。将第一行的内容存入 file.at(0)将第二行内容存入file.at(1)依此类推,直到文本文件中不再有任何行。

错误:

在抛出“std::out_of_range”实例后调用终止 what(): vector::_M_range_check

我认为 while 循环中的检查应该可以防止这个错误!

预先感谢您的帮助。

最佳答案

vector file 为空,file.at(x) 会抛出超出范围的异常。你需要std::vector::push_back这里:

std::string line;
while(std::getline(text, line))
{
file.push_back(line);
}

或者您可以简单地从文件构建字符串 vector :

std::vector<std::string> lines((std::istream_iterator<std::string>(fn.c_str())),
std::istream_iterator<std::string>());

关于C++ vector::_M_range_check 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18796782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com