幼稚園時代「何組」でしたか?

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

A 回答 (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;
    • good
    • 0

cinからの入力はわかりますか?


#include <fstream>

ifstream fin;
fin.open("data.txt");//ファイル名を指定してオープン
std::string str;
fin >> str; //cinのように使える
fin.close();
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報