对<fstream>类的初思考:
fstream被设为可以处理文件的读取的类,在IDE中进行了最初的尝试后,我发现fstream类并没有真正按要求工作,比如有1个txt文档,我想要用fstream的类去处理,但总是并没有真正的读入文件。
是什么原因呢?
由于我的IDE是vs2008,我选的项目类型为win console程序,也许是这个原因使我的程序只能与命令行进行交互而不能与文件进行交互,之后进行测试
如有a.txt的文本文件,a.txt打开后只有两个数2 3
2.cpp文件内容为:
#include <iostream> #include <fstream> using namespace std; int main(){ int a,b; ifstream in("a.txt"); in>>a>>b; cout<<a<<endl<<b; return 0; }
并把a.txt和2.cpp放在同一目录下,编绎2.cpp,并运行2.exe,文件运行成功
但同样的程序,把它放在IDE的win console项目2的2.cpp中,就不能运行成功
这说明是IDE的设置不适合这个程序的使用
然后又copy了网上另一段程序进行测试:
以下代码的作用是从in_file.txt中读入文字内容,并把读到的内容写到out_file.txt中
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { //声明一个 ofstream类型的对象 ofstream outfile( "out_file.txt" ); //声明一个 ifstream类型的对象 ifstream infile( "in_file.txt" ); // 如文件不能打开值为 false if ( ! infile ) { cerr << "error: unable to open input file!/n"; return -1; } if ( ! outfile ) { cerr << "error: unable to open output file!/n"; return -2; } string word; while ( infile >> word ) //从infile文件读取内容,类似等待用户的控制台出入 outfile << word << ' '; //向内容文件outfile写入,类似往控制台输出内容 return 0; }
程序在vs2008的debug运行下报错,无法打开in_file.txt,此时我已把两个txt文件放在和exe的同一目录下,如图
但这时如果从Debug目录下直接运行2.exe,程序又可以完全正常地运行了,这说明了什么呢?
这表明程序的编绎本身是没有问题的,而且用这样的方式运行程序,效果和用命令行是一样的,那这是不是vs2008上的设置有问题呢?