C++中将打印结果输出到文件中
2015-04-03 20:41
831 查看
本人最近在蓝桥杯调试的过程中痛感到打印结果在调试界面上,脑海里是有点不情愿的。于是想出了将输出结果重定向到指定的文件上面。
直接上代码:
其中,第一步:包含头文件#include<fstream>;
第二步:定义ofstream,即"output file stream(输出文件流)"。这样,它将建立一个句柄(handle),以便我们能以一个文件流的形式写入文件。故在这里,Save就是文件句柄,可以用其他名称代替;
第三步:定义("huang.txt");打开为huang.txt的文件。若存在,则被替换掉;若不存在,则程序自动为你创建一个新的文件。
需要注意的是:
(1)ofstream是一个类。因此,ofstream Save("huang.txt");是为了创建一个ofstream类的对象;而此括号中所传递的参数将会上传给构造函数。这里我们将建立文件的名称作为实参传给了该类ofstream的构造函数。其中,也会括号里也可以传递其他的参数,这里不加叙述。
(2)我们的输出不是用cout将其输出到屏幕上,而是用句柄来操作。其实这是重载了"<<"运算符而实现的重定向。Save << x[i];就是讲数组的值写入文件,而这个文件句柄它关联一个打开的流式文件。所以只需输入句柄名,接着输入"<<",然后写上你想输出的内容,如字符串、数组或其他字符等就可以实现对文件的写入。
(3)最后将全部数据写入完之后就需要关闭这个文件,即Save.close(),刚才也说了Save其实就是个对象。故此时就是调用这个ofstream类里的成员函数即可关闭;
(4)一旦你关闭文件之后,在重新打开它之前,就再不能对它进行访问。这需要重新声明句柄才行。
而读取一个文件与写入到一个文件相似:
第一步:包含头文件#include<fstream>;
第二步:定义ifstream,即"input file stream(输入文件流)"。这样,它将建立一个句柄(handle),以便我们能以一个文件流的形式打开文件。故在这里,Open就是文件句柄,可以用其他名称代替;
第三步:定义("huang.txt");打开为huang.txt的文件;
第四步:通过Open.get(ch)来从相应的流文件中读出一个字符,并将其返回给变量。在这句话中get( )函数只带一个参数——用于存储所读取的字符的变量。所以,调用Open.get(ch)后程序将会从Open流中读取一个字符并存入变量ch中。
第五步:Open.close();关闭文件流;
直接上代码:
#include<iostream> #include<cmath> #include<fstream> using namespace std; static int mcount = 0; int x[100]; bool place(int k){//判断放置的位置是否与前面放置的皇后的位置放生冲突 for(int i = 1;i < k;i ++) if(x[k] == x[i] //表示前 k个皇后摆放的位置是否与要摆放的第 k个发生冲突 || abs(k - i) == abs(x[k] - x[i]))//若要摆放的第 k个皇后与前 k个做成对角关系 return false; return true;//若上述都没发生则表示可以摆放在该位置 } void quene(int n) { ofstream Save("huang.txt"); for(int i = 1;i <= n;i ++) x[i] = 0; int k = 1; while(k >= 1){ x[k] = x[k] + 1;//在下一行摆放 while(x[k] <= n && !place(k)) x[k] =x[k] + 1;//搜索下一行 if(x[k] <= n && k == n){//当遍历完所有的皇后后则打印输出每个皇后的位置 mcount ++; for(int i = 1;i <= n;i ++){ Save << x[i]; if(i < n) Save <<" "; } Save <<endl; } else if(x[k] <= n && k < n) k = k + 1;//开始放置下一个皇后 else{ x[k] = 0;//重置第 k个皇后的位置 回溯到重新开始找第 k - 1个皇后的位置 k = k - 1; } } Save.close(); } int main(){ int n;//表示输入的皇后数 while(cin >> n){ quene(n); cout<<mcount<<endl; mcount = 0; } return 0; }
其中,第一步:包含头文件#include<fstream>;
第二步:定义ofstream,即"output file stream(输出文件流)"。这样,它将建立一个句柄(handle),以便我们能以一个文件流的形式写入文件。故在这里,Save就是文件句柄,可以用其他名称代替;
第三步:定义("huang.txt");打开为huang.txt的文件。若存在,则被替换掉;若不存在,则程序自动为你创建一个新的文件。
需要注意的是:
(1)ofstream是一个类。因此,ofstream Save("huang.txt");是为了创建一个ofstream类的对象;而此括号中所传递的参数将会上传给构造函数。这里我们将建立文件的名称作为实参传给了该类ofstream的构造函数。其中,也会括号里也可以传递其他的参数,这里不加叙述。
(2)我们的输出不是用cout将其输出到屏幕上,而是用句柄来操作。其实这是重载了"<<"运算符而实现的重定向。Save << x[i];就是讲数组的值写入文件,而这个文件句柄它关联一个打开的流式文件。所以只需输入句柄名,接着输入"<<",然后写上你想输出的内容,如字符串、数组或其他字符等就可以实现对文件的写入。
(3)最后将全部数据写入完之后就需要关闭这个文件,即Save.close(),刚才也说了Save其实就是个对象。故此时就是调用这个ofstream类里的成员函数即可关闭;
(4)一旦你关闭文件之后,在重新打开它之前,就再不能对它进行访问。这需要重新声明句柄才行。
而读取一个文件与写入到一个文件相似:
第一步:包含头文件#include<fstream>;
第二步:定义ifstream,即"input file stream(输入文件流)"。这样,它将建立一个句柄(handle),以便我们能以一个文件流的形式打开文件。故在这里,Open就是文件句柄,可以用其他名称代替;
第三步:定义("huang.txt");打开为huang.txt的文件;
第四步:通过Open.get(ch)来从相应的流文件中读出一个字符,并将其返回给变量。在这句话中get( )函数只带一个参数——用于存储所读取的字符的变量。所以,调用Open.get(ch)后程序将会从Open流中读取一个字符并存入变量ch中。
第五步:Open.close();关闭文件流;
相关文章推荐
- C++ 把输出结果写入文件/从文件中读取数据
- C/C++ 编程计算2的100万次方(m的n次方),超长结果输出文件
- 在matlab中将处理结果输出为shp文件
- C++ 把输出结果写入到文件中
- c++ 打印简单log信息,输出内容到某一文件中
- C++中将输出指定到文件的方法:
- C++ 把输出结果写入到文件中
- 如何实现把web项目的输出流重置,并将打印语句结果写到日志文件
- 总结: C++ 中如何把输出结果写入到文件中
- c++ 打印简单log信息,输出内容到某一文件中
- C++使用system带参数调用exe程序并把结果输出到文件
- C++打印日志输出文件
- C++ 控制台打印无输出 无法查找或打开PDB文件
- C++ 打印输出日志文件
- C++ 把输出结果写入到文件中
- C/C++ 编程计算2的100万次方(m的n次方),超长结果输出文件
- C++ 把输出结果写入到文件中
- C++ 读取PE文件并十六进制打印输出
- c/c++中数据输出到文件名有变量的文件中或多个程序运行结果输出到同一个文件中的方法
- C++ 把输出结果写入到文件中