VC++2005 StreamReaderの使い方とテキストファイルの表示方法

このQ&Aのポイント
  • VC++2005のStreamReaderを使ってテキストボックスに保存されたテキストファイルを表示する方法について教えていただいたことがあります。ファイル名をテキストボックスに入れてStreamReaderを使用すると、他のテキストボックスに表示することができました。
  • 今回は、ファイル名をテキストボックスに入れずにファイルを表示する方法について質問したいです。現在、以下のプログラムを使用しています。テキストボックスに「p12.txt」と入力されている部分について、これを省略してファイルを表示する方法を教えてください。
  • textBox1->Text = "p12.txt";の部分について質問です。StreamReaderを使用するためにファイル名をテキストボックスに入れる必要がありますが、テキストボックスに入れずにファイルを表示する方法はありますか?
回答を見る
  • ベストアンサー

VC++2005 StreamReader

以前、ここでテキストボックスに保存してあるテキストファイルの表示方法を教えていただきました。 そのときの回答では、読み込みたいファイル名をまずテキストボックスに入れてStreamReaderを使って他のテキストボックスに表示するというプログラムを教えていただきました。 そこで今回質問したいことは、最初にファイル名をテキストボックスに入れずにファイルを表示するのはどうすればよいのかということです。 以下に現在使っているプログラムを書きます。 よろしくお願いします。 textBox1->Text = "p12.txt"; ←この部分について StreamReader^ streamReader = gcnew StreamReader(textBox1->Text); textBox2->Text = streamReader->ReadToEnd();

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

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

 こんばんは。  其のままストレートに  StreamReader^ streamReader = gcnew StreamReader("p12.txt");  で出来る筈です。

xxmajimaji
質問者

お礼

きちんと出来ました。 初歩的な質問ですみませんでした。 ありがとうございます。

関連するQ&A

  • ”System::IO::StreamReader”ってどういう意味ですか?

    Visual C++ 2008 Express Editionで、現在、600kバイト程度のバイナリファイルを読み込んで特定の番地のデータだけを取り出してそれをテキスト変換してテキストボックス内に表示させるというプログラムを作成しているのですが、このことをOKwaveでどのようにコーディングするかを教えてもらったところ、 System::IO::StreamReader^ sr=gcnew StreamReader(_T("sample.txt")); このような文を教えてもらったのですが、全く知識がなく何をやっているのかわかりません。 ”sr”というのは変数で、sample.txtからstreamReader関数でsample.txt内のデータをsr変数に 入れているという感じがしますが、”System::IO::StreamReader”とか”gcnew”とかの意味がよくわかりません。 どうかご教授お願いいたします。

  • バイナリファイルのデータから特定の番地のHEXデータの表示方法

    現在、バイナリファイルのデータから特定の番地のデータだけをテキストボックスに表示させたいというプログラムを作成しております。 特定番地は0x1F65番地~の6バイトを抜き出し、そのHEXデータをテキストボックスにそのHEXがわかるテキストデータとして表示させたいと考えているのですが、この場合どのようにコーディングしたらよいのでしょうか。 現在のプログラムは private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //指定したファイル名でStreamReaderを設定する try{ System::IO::StreamReader^ sr = gcnew System::IO::StreamReader("sample.bin"); //受け皿 array<wchar_t>^ buf=gcnew array<wchar_t>(6); //先頭から0x1f63バイト動かす sr->BaseStream->Seek(0x1f65,System::IO::SeekOrigin::Begin); //2バイト読み込む sr->Read(buf, 0, buf->Length); //此処でテキストボックスに入れる this->textBox1->Text= gcnew System::String(buf); } catch(System::Exception^ ex){ System::Windows::Forms::MessageBox::Show(ex->ToString()); } //this->textBox1->Text = L"変更1"; this->textBox2->Text = L"変更2"; this->textBox3->Text = L"変更3"; } コマンドボタンを押して、特定番地をBUFに入れた後テキストボックスに代入しています。これだとAsciiコードに準じたの文字が表示されてしまうので、そのHEX番号がわかるようにテキストボックスに入れたいとおもっています。 どうぞ、ご教授よろしくお願いいたします。

  • バイナリファイルのデータから特定の番地のHEXデータを18バイトとって表示方法すると文字化けする。

    現在、Visual C++ 2008 Express Editionでバイナリファイルを読み込んで、このファイルの0x1F65番地から18バイトを取得して、それをテキスト変換してテキストボックスに表示したいプログラムを作成しています。 バイナリデータをテキストデータに変換するプログラムを教えていただいて、それができたので、今度はもう少し長い18バイトを取得して、テキスト変換してテキストボックスに表示させようとしたのですが、バイナリデータとは違うデータが表示されるようになってしまいました。 どうしてこうなるのか原因がわからない状態です。 どなたか原因がわかるかたいらっしゃいませんでしょうか。どのように修正すれば良いかご教授お願いいたします。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //指定したファイル名でStreamReaderを設定する try{ System::IO::StreamReader^ sr = gcnew System::IO::StreamReader("sample.bin"); //受け皿 array<wchar_t>^ buf=gcnew array<wchar_t>(18); //先頭から0x1f65バイト動かす sr->BaseStream->Seek(0x1f65,System::IO::SeekOrigin::Begin); //18バイト読み込む sr->Read(buf, 0, buf->Length); //此処でテキストボックスに入れる this->textBox1->Text= this->ToHEXString(buf); } catch(System::Exception^ ex){ System::Windows::Forms::MessageBox::Show(ex->ToString()); } //this->textBox1->Text = L"変更1"; this->textBox2->Text = L"変更2"; this->textBox3->Text = L"変更3"; }

  • バイナリファイル読み込みプログラムのエラー内容

    現在、バイナリファイル読み込みプログラムを作成しており、だいぶエラーが減ってきたのですが、1つだけエラーが発生します。 作成したプログラム private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //指定したファイル名でStreamReaderを設定する try{ System::IO::StreamReader^ sr = gcnew StreamReader(_T("sample.bin")); //受け皿 array<wchar_t>^ buf=gcnew array<wchar_t>(2); //先頭から0x1f63バイト動かす sr->BaseStream->Seek(0x1f63,System::IO::SeekOrigin::Begin); //2バイト読み込む sr->Read(buf, 0, buf->Length); //此処でテキストボックスに入れる this->textBox1->Text= gcnew System::String(buf); } catch(System::Exception^ ex){ System::Windows::Forms::MessageBox::Show(ex->ToString()); } //this->textBox1->Text = L"変更1"; this->textBox2->Text = L"変更2"; this->textBox3->Text = L"変更3"; } エラー内容は、 1>コンパイルしています... 1>RungeKutta.cpp 1>c:\mywork\felicareader_test\rungekutta\rungekutta\Form1.h(135) : error C2061: 構文エラー : 識別子 'StreamReader' 1>ビルドログは "file://c:\mywork\felicareader_test\RungeKutta\RungeKutta\Debug\BuildLog.htm" に保存されました。 1>RungeKutta - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== 先ほどの”System::IO::StreamReader^ sr = gcnew StreamReader(_T("sample.bin")); ”文でエラーが発生しているようです。ちょっとエラー内容がわかりません。 ご存じである方いらっしゃいましたらどうぞご教授いただきますようよろしくお願いいたします。 ちなみにこのプログラムは、 コマンドボタンを押すと”sample.bin”ファイルを読み込んで、特定の番地の2バイトだけをテキストボックスに表示するというプログラムです。

  • Visual C++ 2008 Express Editionでバイナリファイルの読み込み方法

    いま、Visual C++ 2008 Express Editionで、コマンドボタンをクリックした時に、600kバイト程度のバイナリファイルから特定の番地のデータを抜き出して(2バイト分)、そのデータをテキストデータに変換してテキストボックスに表示させたいのですが、コードを作成したのですが、エラーがたくさんでて書き方がよくわかりません。 一応コマンドボタンのところはこのように書きました。まだ、ファイルを読み込むまで行っていません。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {    //指定したファイル名でStreamReaderを設定する    try{       sreader1=gcnew StreamReader("sample.txt");    }catch(Exception^ ex){       //Console::WriteLine(ex->Message);       return 0;   } this->textBox1->Text = L"変更1";    this->textBox2->Text = L"変更2"; this->textBox3->Text = L"変更3"; } }; どうかご教授いただきますようよろしくお願い致します。

  • VC++のデータ保存について

     いつもお世話になっております。VC++でプログラムを作成しているプログラミング初心者です。環境はOSがWindowsXP、統合環境はVisualStudio2008Professionalを使用しています。  現在簡易な家計簿ソフトを製作しているのですが、データの保存がうまくいきません。プログラムの動作としては、データの保存先を「名前をつけて保存」のコモンダイアログで指定し、それをクラスのフィールドに保存します。更にそのクラスのフィールドから、Path.txtというファイルにpath名を保存します。プログラムの起動時にこのPath.txtを読み込み、その中身をクラスのフィールドにセットします。その後、「ファイルの読み込み」をメニューで選択する時に、クラスのフィールドを引数として、データを読み込む関数を呼び出します。  この方法で、デバックモードでは動作していたのですが、リリースモードではPath.txtにファイルの保存先が書き込まれず、うまく動作しませんでした。以下、関係のあると思われる所を抜粋しました。 *****ファイルの保存先path名の保存***** private: void Pathset() { StreamWriter^ writer2 = gcnew StreamWriter("path.txt");     // パスデータを書き込み writer2->WriteLine(this->report7->Pathname); // クラスのフィールドからデータを取り出し書き込み writer2->Close(); } *****Form1クラスの生成直後に、クラスのフィールドにpath名を格納する***** StreamReader^ reader2 = gcnew StreamReader("path.txt"); this->report7->Pathname = ""; this->report7->Pathname = reader2->ReadLine(); reader2->Close(); *****メニューでファイルの読み込みを選択したときの処理***** LoadCsvFile(this->report7->Pathname); // LoadCsvFileはファイルの読み込みを実行する関数  以上、長く拙い説明で申し訳ありませんが、原因が分かる方、よろしくお願いいたします。m(_)m

  • C#で空白行を削除する方法

    C#でテキストを読み込んで、文字列型の変数に代入、そしてtextBoxに表示させます。その中にいくつかの空白だけの行があります。その空白行だけを削除する方法がわかりません。わかる方がいらっしゃいましたらよろしくお願いします。 FileStream file = File.Open(@"C:\text.txt",FileMode.Open); Encoding enc = Encoding.GetEncoding("Shift_JIS"); StreamReader reader = new StreamReader(file,enc); string A = reader.ReadToEnd(); A = Regex.Replace(A,"\r\n",""); textBox1.Text = A; とすると全ての改行が削除されてしまいます。 正規表現をうまくつかうと出来るような気がするんですが・・・

  • VC++2005 型についてのエラー

    現在VC++2005でプログラムを作成しています。 そこでテキストファイルに書かれて保存されているものをテキストボックスに表示するというものを作っています。 そして今は、ssという変数にその表示されているものを代入してあります。そこでそのssというものと7:00とテキストファイルに書かれているものを比べてみたいと考えています。 そこでstrcmpで比べてif文を作りたいのですが、下に書いたエラーで変換できませんと出てしまいます。 このような場合はどのように修正すればよいのでしょうか? 基本的な質問かもしれませんがよろしくお願いします。 「'strcmp' : 1 番目の引数を 'System::String ^' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)」 **************************************************************** String^ ss; ss=textBox2->Lines[0]; textBox4->Text=ss; if (strcmp(ss, "7:00")==0) { MessageBox::Show("7時"); } else { MessageBox::Show("それ以外"); } ****************************************************************

  • VC++2005 型変換

    テキストファイルを開いて、そのファイルの中身をfgetsで読みながらそれを何回か繰り返すというようなことをするというプログラムを書いてます。プログラムは下になります。 int m; FILE* pFile; char buffer[128]; pFile=fopen("p1.txt","r"); pFile=textBox1->Text; if (pFile==NULL) { label1->Text="ファイルがありません。\n"; } for(m=1; m<=8; m++) { fgets(buffer,128,pFile); String^ buffer; buffer=textBox2->Text; } } デバックを行うと次のエラーが出てしまいます。 error C2440: '=' : 'System::String ^' から 'FILE *' に変換できません。 どのように直せばよいのでしょうか?

  • VC++2005 Form1とForm2のデータのやりとり

    現在VC++2005でプログラムをしています。 そこでForm1で表示されているテキストボックスの中身をForm2のテキストボックスに表示するのはどのようにすればよいのでしょうか? ちなみに、Form2の表示は下記のプログラムで行っています。 ―Form1.hの内容― #include "Form2.h" Form2^ newMDIChild = gcnew Form2(); newMDIChild->Show(); ―Form2.hの内容― this->Hide(); というので表示を消しています。 初歩的な質問だと思いますがよろしくお願いします。

専門家に質問してみよう