• ベストアンサー

プログラムの実行中にtextファイルから文章を読み込みたい

はじめまして。ここへの質問は初めてとなります。 早速ですが、質問です。 私はVisual C++ .netを使用しているのですが、プログラム実行中に「メモ帳」などのtextファイルから文章を読み取りたいのですが、方法がわかりません。 どうすればよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

(1).net FrameWork利用 MSVC++.net frameworkの流儀に従うと、以下のようなソースコードになるかと思います。 try~catch(=例外処理)するところが「みそ」で、ソースが複雑になるかもしれませんが、万が一、エラーが起きた場合などにそなえて、try~catchは使うべきだと思います。 使うクラスは StreamReader String StringBuilder StringWriter です。 .netのStringクラスにMFCのCStringクラスのような「+=」演算子のオーバーロードが用意されていないので、利用するクラスが増えています。 --------------- try { StreamReader* sr = new StreamReader(strFileName); try { String* line; StringBuilder *strbuf = new StringBuilder(); StringWriter *strwtr = new StringWriter(strbuf); while (line = sr->ReadLine()) { strwtr->WriteLine(line); } textBox1->Text = strbuf->ToString(); //textBox1->Refresh(); } __finally { if (sr) __try_cast<IDisposable*>(sr)->Dispose(); } catch (Exception* e) { MessageBox::Show(e->Message, S"エラー" , MessageBoxButtons::OK , MessageBoxIcon::Exclamation); } } -------------------------------------- (2)MFC利用 CString strLine; CString strResult; try { CStdioFile file(strFileName , CFile::typeText | CFile::modeRead | CFile::shareExclusive); while(file.ReadString(strLine)) { strResult = strResult + strLine + "\r\n"; } file.Close(); } catch(CFileException* pe) { char szMsg[512]; pe->GetErrorMessage(szMsg , sizeof(szMsg)); AfxMessageBox(szMsg); pe->Delete(); return; } -------------------------------------- (3)fopenを使う 最も古典的で、Linux等のOSの開発環境に対する互換性もあります。 が、.netでの動作確認はしていないので、ご参考まで。 fgetsに指定した文字列の長さの行しか読み取れないのが痛いかな・・・ #include <stdio.h> #define MAXLINE 512 FILE *fp; char line[MAXLINE]; if ((fp = fopen(strFileName , "rt")) == NULL) { return ; } while(fgets(line,MAXLINE,fp)){ ... なんらかの処理 ... } fclose(fp); fp = NULL;

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

cinからの入力はわかりますか? #include <fstream> で ifstream fin; fin.open("data.txt");//ファイル名を指定してオープン std::string str; fin >> str; //cinのように使える fin.close();

すると、全ての回答が全文表示されます。

関連するQ&A