テキストファイルの書き込みにはStreamWriterを用いる。System::Text::Encodingでエンコーディングの指定が可能
void FileWrite(System::String^ filepathname) { System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter( filepathname, //ファイル名 false, //追記モード System::Text::Encoding::UTF8 //System::Text::Encoding::GetEncoding("shift_jis") //文字コード ); sw->Write("吾輩は猫である。名前はまだ無い。\n"); sw->Write("どこで生れたかとんと見当がつかぬ。\n"); sw->Write("何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。\n"); sw->Write("吾輩はここで始めて人間というものを見た。\n"); sw->Write("しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。\n"); sw->Write("この書生というのは時々我々を捕えて煮て食うという話である。\n"); sw->Close(); }
テキストファイルの読み込みにはStreamReaderを使用する。
一行ずつの読み込みにはReadLineを用いる。ファイル終端判定はPeekを使うのが一般的のようだが、参考文献によると模範解答ではないらしい。ここではEndOfStreamを使っている
void FileRead(System::String^ filepathname) { //"C:\test\1.txt"をShift-JISコードとして開く System::IO::StreamReader^ sr = gcnew System::IO::StreamReader( "C:\\test\\sample.txt", System::Text::Encoding::Encoding::UTF8); while(sr->EndOfStream != true ){ System::String^ r = sr->ReadLine(); System::Console::WriteLine( r );//ReadLineは改行を含まない } sr->Close(); }
int main(array<System::String ^> ^args){ FileWrite("C:\\test\\sample.txt"); FileRead("C:\\test\\sample.txt"); System::Console::Read(); }
参考文献
https://dobon.net/vb/dotnet/file/readfile.html