本文主要是介绍【C++】文件的读取与写入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C++的文件读取与写入感觉比起其它语言特别地难,对比起《【Python】文件读写操作》(点击打开链接)、《【PHP】让记事本成为你调控变量的控制台》(点击打开链接)与《【Java】输入与输出与JDK1.5之后的新型字符串StringBuilder》(点击打开链接),C++最大的特点就是文件的输入流与输出流分开,同时最关键的是自身并没有字符串变量,在其文件的读取方法变量限制于字符数组char[],需要利用到一个二维的字符数组char[][]才能完事。
同时由于各大的编译器不同,C++在你不对变量初始化也不会出现警告的情况下,你还必须用memset方法,自己对二维字符数组初始化,使得判断为空的条件一致。
下面,用以下的一个程序说明问题:
如果f:\1.txt不存在,则先自己创建这个文件,之后,用户不停地输入数据,直到输入exit;结束。
程序的难度主要是在文件的内容读入到C++的二维数组上,其基本思想如下图所示:
代码如下:
- #include<iostream>
- #include<fstream>
- using namespace std;
- int main(){
-
- char input[255];
- char fileContent[100][255];
- memset(fileContent,'\0',sizeof(fileContent));
- char* filePath="F:\\1.txt";
-
- while(1){
-
- ifstream infile(filePath,ios::in|ios::_Nocreate);
- if(!infile){
- cout<<filePath<<"不存在,已为你创建!"<<endl;
- ofstream fileCreate(filePath,ios::_Noreplace);
- if(fileCreate){
- fileCreate.close();
- }
- else{
- cerr<<"出错了!"<<endl;
- exit(1);
- }
- }
- else{
- for(int i=0;!infile.eof();i++){
- infile.getline(fileContent[i],255);
- }
- cout<<filePath<<"现时的内容如下:"<<endl;
- }
- infile.close();
-
- for(int i=0;fileContent[i][0]!='\0';i++){
- cout<<fileContent[i]<<endl;
- }
-
- cout<<"输入一些东西到"<<filePath<<",输入exit;退出!"<<endl;
-
- cin>>input;
- if(!strcmp(input,"exit;")){
- return 0;
- }
-
-
- ofstream outfile(filePath,ios::ate|ios::_Nocreate);
- if(!outfile){
- cerr<<"出错了!"<<endl;
- exit(1);
- }
- else{
- outfile<<input<<'\n';
- }
- outfile.close();
- }
- }
注释已经说得比较清楚了。这里不再赘述。
唯一想说一下,
涉及文件操作,开头必须引入<fstream>
利用getline方法,C++能把一行内指定长度的内容,这里是255,读取到你指定的一维数组中,遇到Enter等换行符则自动终止,无论此时所读的一行长度是否累积到255,同时自己把光标移到下一行。
这篇关于【C++】文件的读取与写入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!