【C++】ファイルの読み取りと書き込み
C++のファイルの読み取りや書き込み感覚は他の言語より特に難しい、「【Python】ファイル読み書き操作」(クリックでリンクを開く)、「【php】手帳をあなたのコントロール変数にするコンソール」(クリックでリンクを開く)、「【Java】入力と出力とJDK 1.5以降の新型文字列StringBuilder」(クリックしてリンクを開く)、C++の最大の特徴はファイルの入力ストリームと出力ストリームが分離されていることであり、同時に最も重要なのは自身が文字列変数を持っていないことであり、そのファイルの読み取り方法変数は文字配列char[]に制限され、2次元の文字配列char[]を利用しなければならない.
同時に、各コンパイラが異なるため、C++は変数を初期化しなくても警告が出ない場合、memsetメソッドを使用して、2次元文字配列を自分で初期化し、空の条件が一致すると判断しなければなりません.
次に、次のプログラムで問題を説明します.
f:1の場合txtが存在しない場合は、まず自分でこのファイルを作成し、その後、ユーザーはexitを入力するまでデータを入力し続けます.終わります.
プログラムの難易度は主にファイルの内容がC++の2次元配列に読み込まれることであり、その基本思想は下図の通りである.
コードは次のとおりです.
注釈はもうはっきり言った.ここではこれ以上述べない.
唯一言いたいのは、
ファイル操作に関しては、最初にを導入する必要があります.
getlineメソッドでは、C++で1行の長さを指定することができます.ここでは255です.指定した1次元配列に読み込まれ、Enterなどの改行文字に遭遇すると自動的に終了します.このとき、読んだ1行の長さが255に蓄積されているかどうかにかかわらず、自分でカーソルを次の行に移動します.
同時に、各コンパイラが異なるため、C++は変数を初期化しなくても警告が出ない場合、memsetメソッドを使用して、2次元文字配列を自分で初期化し、空の条件が一致すると判断しなければなりません.
次に、次のプログラムで問題を説明します.
f:1の場合txtが存在しない場合は、まず自分でこのファイルを作成し、その後、ユーザーはexitを入力するまでデータを入力し続けます.終わります.
プログラムの難易度は主にファイルの内容がC++の2次元配列に読み込まれることであり、その基本思想は下図の通りである.
コードは次のとおりです.
#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";// string , string
while(1){
// C++
ifstream infile(filePath,ios::in|ios::_Nocreate);//vs ios::_Nocreate,vc6 ios::nocreate
if(!infile){//
cout<<filePath<<" , !"<<endl;
ofstream fileCreate(filePath,ios::_Noreplace);// ,vs ios::_Noreplace,vc6 ios::noreplace
if(fileCreate){
fileCreate.close();//
}
else{
cerr<<" !"<<endl;
exit(1);
}
}
else{
for(int i=0;!infile.eof();i++){// , F:\1.txt
infile.getline(fileContent[i],255);// getline , , fileContent
}
cout<<filePath<<" :"<<endl;
}
infile.close();//
for(int i=0;fileContent[i][0]!='\0';i++){// fileContent 0
cout<<fileContent[i]<<endl;
}
cout<<" "<<filePath<<", exit; !"<<endl;
cin>>input;
if(!strcmp(input,"exit;")){// exit; ,strcmp(input,"exit;") 0, ,
return 0;// int ,return 0 , , void exit(0);
}
//C++
ofstream outfile(filePath,ios::ate|ios::_Nocreate);//ios::ate 。ios::app , outfile.seekp(0,ios::end) ,
if(!outfile){
cerr<<" !"<<endl;
exit(1);
}
else{
outfile<<input<<'
';//
}
outfile.close();//
}
}
注釈はもうはっきり言った.ここではこれ以上述べない.
唯一言いたいのは、
ファイル操作に関しては、最初に
getlineメソッドでは、C++で1行の長さを指定することができます.ここでは255です.指定した1次元配列に読み込まれ、Enterなどの改行文字に遭遇すると自動的に終了します.このとき、読んだ1行の長さが255に蓄積されているかどうかにかかわらず、自分でカーソルを次の行に移動します.