尝试使用ifstream读取文件。我遇到以下错误: 矢量下标超出范围 这种情况发生在我到达打开文件的结束语句之前,删除它不会导致异常。 以下是一些示例代码:
#include <fstream>
#include <algorithm>
#include <vector>
#include <string>
#include <iterator>
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
ifstream ifile("myswearwords.txt");
if (!ifile.is_open())
{
cerr << "File not found!\n";
return false;
}
std::vector<std::string> myswearswords;
std::copy(std::istream_iterator<std::string>(ifile),
std::istream_iterator<std::string>(),
std::back_inserter(myswearswords));
// ifile.close(); -> exception rased, when I reach th ebrakpoint at this point
/// do further work
return 0;
}
有人能解释我这里的错误吗?
答案 0 :(得分:0)
您发布的代码存在一些编译时问题:
#include <iostream>
int main()
ifstream ifile
所有这些都得到了纠正,代码运行良好:http://ideone.com/mzOyE2
将数据复制到myswearswords
后,ifile
和myswearswords
之间不会保留连接。所以你不应该看到这个错误。
现在很明显,如果你甚至可以编译,你还没有向我们展示你所有的实际代码。实际的错误可能出现在未显示的代码部分。
顺便提一下,您可以使用vector
构造函数rater来改进代码,而不是随后复制到myswearswords
:
const vector<string> myswearswords{ istream_iterator<string>(ifile), istream_iterator<string>() };