• ベストアンサー

C++ ドラッグ&ドロップによるテキストデータ読込

C++初心者です。 aaa.txtのデータ(数値がたくさん並んでいるもの)を読み込んである列の平均値を出すなど計算したいと思っています。 しかしaaa.txt以外にも計算したいテキストデータがたくさんあり、そのたびいちいちソースを弄ってテキストの名前を変えるのはおっくうです。 今は、次のようにファイルを読み込んでいます。 ifstream ifs("aaa.txt"); そこでexeファイルにドラッグ&ドロップしてそのテキストファイルの数値を勝手に読み込んでくれるように改変できるでしょうか?

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>そこでexeファイルにドラッグ&ドロップして エクスプローラなどでexeファイルのアイコンにドラッグ&ドロップして… ということであれば、「コマンドライン引数」で受け取れるでしょう。 # ファイル名に半角空白が含まれる場合は""で囲って渡されますのでご注意を。 exeファイルがGUIで(コマンドプロンプトなどではなく)個別のウィンドウを持つ場合はメッセージで通知されますので必要な情報を取得してください。

cough404
質問者

お礼

コマンドライン引数を使って int main(int argc, char *argv[]) { ifstream ifs(argv[1]); と改変するこによって成功しました。 迅速な回答ありがとうございます。

関連するQ&A

  • テキストデータの読み込みについて

    C言語のテキストデータの読み込みについてです。 C言語のプログラムについてです。 2444,1114,2807, 1984,2845,2086, 658.1,-1564.0,1239.7, -102.0,958.4,123.1, 12.7,6.0,82.7 2439,1110,2802, 1973,2865,2108, 658.8,-1563.7,1239.6, -102.0,957.1,121.9, 12.8,6.0,82.7 2441,1106,2806, 1967,2888,2124, 659.4,-1563.5,1239.5, -102.2,956.4,121.0, 12.8,6.1,82.8 2440,1109,2808, 1964,2896,2127, 660.0,-1563.3,1239.4, -102.7,956.2,120.7, 12.8,6.1,82.8 2441,1112,2807, 1981,2894,2120, 660.6,-1563.0,1239.4, -103.3,956.2,120.1, 12.8,6.1,82.8                                       ↑ 上の様なカンマとスペースで15個に区切られているtxtファイルがあるのですが、このtxtデータの10コ目と11コ目をを計算で使いたく、取り出したいと考えているのですがscanfを使いどのように取り出すことが出来るのか、また取り出したデータから数値を引くことを教えて頂きたいです。 つまり -102.0   958.4 -102.0   957.1 -102.2 と 956.4 -102.7   956.2 -103.3   956.2,             を取り出して計算に使いたいです。 そして1番上の数値だと、 -102.0と958.4 を読み込み、例えばそれぞれ100を引いた値を配列に入れたいです。 -102.0と958.4 → -202.0 と 858.4 のように取り出したいです。 教えて頂きたいです。お願いします。

  • C# リッチテキストボックスへのドラッグ&ドロップ

    C#でリッチテキストボックスにファイルをドラッグ&ドロップすることでファイルそのものを張り付けることは可能でしょうか?(張り付けたファイルはデスクトップ上の物と同様にダブルクリックで開ける) また、可能ならどのようにすればできるのか教えていただけると幸いです。

  • ドラッグ&ドロップで読み込むことは・・・

    exeファイルにファイルを直接ドラッグ&ドロップをして、 ファイルを読み込むことっていうのはできるのでしょうか? できるのであれば、どのような方法を用いればよいか教えてください。

  • 【C#】ドラッグ&ドロップについて

    前にも質問したのですが、行き詰まったのでもう一度質問します。 (1)リッチテキストボックスにテキストファイルをドラッグ&ドロップする。 (2)そのテキストファイルの内容をリッチテキストボックスに表示する。 というプログラムを作っています。 このうち(1)についてはほぼ解決したのですが、(2)についてはさっぱりです。(つまり、DragDropイベントの部分がわかりません。) どなたか教えて下さい。

  • 【C# 2010】 テキストへのドラック&ドロップ

    VisualStudio C#2010 Express の環境で、テキストボックスにエクスプローラからフォルダを指定(複数)して、ドラック&ドロップすると、そのフォルダのフルパスをテキストボックスへ表示させるアプリケーションを作成しております。 調べながら作成し、フォルダのフルパスをテキストボックスへ表示させられるようになったのですが、わからない点として、複数のフォルダを指定しても、テキストボックスに表示されるのは1フォルダ分のフルパスだけになってしまうという点です。 テキストボックス側のプロパティで、複数行で表示させる設定(Multiline)は有効(True)にしてありますし、ユーザーがドラックしたデータを受け入れるかの設定(AllDrop)も有効にしてあります。 その他、気づいた点として、☆ ドロップイベントの配列(pass)には指定したフォルダ分のフルパスが格納されていますが、textbox1.Text = pass[i] の部分で全てのフルパスがテキストに表示されません。 原因を考えましたが、どうしてもわからなかったので、どなたかお分かりになられる方がいらっしゃい ましたら、ご教授のほどお願いできますでしょうか? 何卒、よろしくお願いいたします。 ----------------------------------------------------------------------------- public Form1() { InitializeComponent(); this.textBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop); this.textBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter); } // ☆ ドラッグイベント private void textBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.All; else e.Effect = DragDropEffects.None; } // ☆ ドロップイベント private void textBox1_DragDrop(object sender, DragEventArgs e) { string[] pass = (string[])e.Data.GetData(DataFormats.FileDrop, false); int i; for (i = 0; i < pass.Length; i++) { textBox1.Text = pass[i]; } }

  • VB6でのドラッグ&ドロップについてです

    VB6でのことなんですが、リネームツールを作ろうと思って色々やってるのですが、うまくいきません。 フォルダをドラッグ&ドロップをして、 text1にフォルダの中のファイル名を表示して、text2にファイル名をコピーしてリネーム、というようなものを作りたいと考えています。 フォルダをドラッグ&ドロップして表示されるのが、そのフォルダのフルパスになってしまいます。 ドラッグ&ドロップしたフォルダの中のファイル名だけを表示する方法はどうすればいいのでしょうか? よろしくお願いします。

  • ifstream を利用した1行分のテキスト読み込みでうまくいきません

    こんにちは。 C言語はある程度使えるつもりでいます。 現在C++を勉強中でして、ファイルのIO のところをやっています。 が、テキストを1行読み込むというところで つまずいています。 以下はそのソースです。 string LineData; ifstream IFS; IFS.open("hoge.txt", ios::in | ios::binary); IFS >> LineData; とした場合、LineData には hoge.txt の1行分が 格納されるのを期待していたのですが、 実際には、空白があるとそこで読み込みが切れてしまいます。 例. hoge.txt の中身(※△は空白) --------------------------- 1行目AAABBB△CCCDDD 2行目AAABBB△CCCDDD 3行目AAABBB△CCCDDD --------------------------- IFS >> LineData; で取得したときの LineData --------------------------- 1行目AAABBB --------------------------- 期待していたのは --------------------------- 1行目AAABBB△CCCDDD --------------------------- 別の方法で読み込みを行ったほうがよいのでしょうか?

  • 秀丸へのドラック&ドロップ

    秀丸へのドラック&ドロップができなくなってしまいました。 秀丸を開いていて、 そこに他のテキストファイルやc、c++ファイルなどを ドラック&ドロップで持っていこうとしても、 秀丸上でアイコンが禁止マーク(?)のようなものになってしまい、 ドロップできません。 突然このような状態になってしまいました。 それと同時に秀丸を起動する度ユーザーアカウント制御のダイアログが表示されるようになってしまい、 大変うざくなってしまいました。 何か設定があるのでしょうか。 情報をお持ちの方がいらっしゃいましたら、 お教え願えませんか。 よろしくお願い致します。

  • テキストの読み込み

    数値が書き込まれている2つのテキストファイルを同時に読み込ませてループしていくのは どうしたら良いですか? x.txtが1行目を読み込んだら,y.txtも1行目を読み込むように行いたいです。

  • C++のファイルに対する配列データの読み書き

    C++で配列c[0],c[1],....の値をファイルに出力すると、 1.2 3.2 5.1 8.2 -9.1 のようになると思います(この例は配列のサイズが5)。実際は100以上の配列にします。 プログラム的にはだいたい下のようになると思っています。 std::ofstream ofs( "test.txt" ); ofs << ここで並びの出力をするはず? << std::endl; 意味は、出力ファイルの定義とストリームによる書き出し?と改行だと思います。 並びの出力ですから、ループでよいのでしょうか。プログラム作法が分からないので教えて頂きたいのですが。データの区切りは空白で、できれば書く数値のフォーマットは揃えたいですが。 次に、読み込むときはどうなるでしょうか。 std::ifstream ifs( "test.txt" ); std::string str; ifs >> str; std::cout << str << std::endl; これだと読んだデータを画面表示して終わりです。配列に読み込む方法なのですが。 よろしくお願いします。

専門家に質問してみよう