我正在尝试使用简单的ifstream
读取整个文本文件。
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
int main()
{
std::string line;
std::vector<std::string> DataArray;
//std::vector<std::string> QueryArray;
std::string filename = "c:\\helloworld.txt";
std::ifstream myfile(filename.c_str());
//std::ifstream qfile("queries.txt");
if (myfile.fail()) {
perror("c:\\helloworld.txt");
getchar();
return -1;
}
if (!myfile) //Always test the file open.
{
std::cout << "Error opening output file" << std::endl;
system("pause");
return -1;
}
while (std::getline(myfile, line))
{
DataArray.push_back(line);
}
/*if (!qfile) //Always test the file open.
{
std::cout << "Error opening output file" << std::endl;
system("pause");
return -1;
}
while (std::getline(qfile, line))
{
QueryArray.push_back(line);
}*/
//std::cout << QueryArray[20] << std::endl;
std::cout << DataArray[7] << std::endl;
return 0;
}
我得到以下结果:
打开输出文件时出错
文本文件my_text_file.txt
正好位于我的程序的同一目录中。
看起来它无法读取my_text_file.txt
,为什么?我做错了吗?
同时改变
std::ifstream myfile("c:\\my_text_file.txt");
到
std::ifstream myfile("my_text_file.txt");
无法解决问题。
答案 0 :(得分:0)
我认为您的错误可能是由多种原因引起的。 有一个方便的错误消息解释事物称为perror(c++ reference perror)。 使用它的标准方法(在声明文件后):
if(myFile.fail()){
perror("my_text_file.txt");
return -1;
}
这应该会给你一个关于这个问题的更详细的报告,它可以告诉你问题是否真的是文件的目录。希望这会有所帮助。