我正在尝试读取文本文件,以便显示存储在文件中的信息。这是我写的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifile;
ifile.open("List Of Hospitals.txt",ios::in);
while(!ifile.eof())
{
cout<<ifile;
}
ifile.close();
return 0;
}
但是我得到了0x28fe74的输出,这个程序永远不会终止。 我应该在此代码中进行哪些更改,以便我能够一次读取整个文件或一次读取一行。 (均可接受)
答案 0 :(得分:0)
您要做的是输出while流对象实例,但没有输出重载将流作为输入。
但如果你看到例如this std::ostream::operator<<
reference你会看到一个带有std::basic_streambuf
指针的重载。这个重载的运算符将从std::basic_streambuf
输出全部。您可以使用rdbuf
函数获取流std::basic_streambuf
指针。
可以像
一样使用std::ifstream ifile;
ifile.open("List Of Hospitals.txt");
if (ifile)
std::cout << ifile.rdbuf();
另请注意,不建议使用循环。这是因为在之后尝试从文件末尾的读取之后才设置eofbit
标志。所以像你这样的循环会迭代一次到多次。
答案 1 :(得分:0)
尝试使用getline。你没有用你的版本增加文件指针,所以它只会打印变量并永远继续。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string line;
ifstream ifile;
ifile.open("List Of Hospitals.txt",ios::in);
if (ifile.is_open())
{
// getline will pull a line at a time here.
while ( getline (ifile,line) )
{
cout << line << '\n';
}
ifile.close();
}
return 0;
}
答案 2 :(得分:0)
将文件复制到标准输出流:
ifstream in;
in.open( "List Of Hospitals.txt",ios::in);
std::copy( std::istreambuf_iterator<char>(in), std::istreambuf_iterator<char>(),
std::ostream_iterator<char>( std::cout, ","));
答案 3 :(得分:0)
尝试这样的代码:
逐字阅读。
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifile("List Of Hospitals.txt",ios::in);
char temp[20]; // temp[Maximum length of your word]
while(ifile >>temp) {
cout << temp << " " ;
}
ifile.close();
return 0;
}