关于C++输入输出流的问题

首先是关于fstream类的函数setf(),其形参表内有一或两个参数,貌似都是ios空间内的名为“fmtflags”的枚举变量,比如ios::left之类的。我想问一下具体都有哪些以及它们的作用,一直没有找到。。。第二个问题是,以下是我编写的一段程序:#include#includeusing namespace std;int main(int argc, char* argv[]) {ifstream in;in.open(argv[1], ios::binary);if (!in) {cout << "Cannot open file.";return 1;}ofstream out("out.txt");cout.rdbuf(out.rdbuf());const int bsz = 1024;char buf[bsz];int line = 0;while(in.getline(buf, bsz)) {cout << ++line << ": " << buf << endl;}return 0;}这段程序的目的是提取原文件的每一行,每一行都加上行号后输入到另一个文件“out.txt”,已经可以实现(由于题目要求用cout输出到文件所以我对cout做了重定义)。我想问的是如果不把结果输入到输出文件,而是直接对原文件进行更改,即增加行号的话,是否可以?应如何更改?我曾直接把"out.txt"改为argv[1],但是运行结果是原文件被清空了。。。后来我想把"out.txt"再复制回去,于是有如下代码:#include#includeusing namespace std;int main(int argc, char* argv[]){ifstream in;in.open(argv[1], ios::binary);if (!in) {cout << "Cannot open file.";return 1;}ofstream out("out.txt");cout.rdbuf(out.rdbuf());const int bsz = 1024;char buf[bsz];int line = 0;while(in.getline(buf, bsz)) {cout << ++line << ": " << buf << endl;}in.close();out.close();in.open("out.txt", ios::binary);if (!in) {cerr << "Cannot open file.";return 1;}out.open(argv[1]);cout.rdbuf(out.rdbuf());char buf1[bsz];while(in.getline(buf, bsz)) {cout << buf << endl;}in.close();out.close();return 0;}但是运行结果是Cannot open file.问题出在哪里呢?谢谢!!!

第1个回答  2013-08-29
你这个应该不会有人给你答案了。。。。。。。。太乱,注意排版,我看着看着就不想看了,不会的可以找msdn追问

粘上去的时候是排好的结果发出来成了这样。。。 好吧谢谢。。

相似回答