• ベストアンサー

テキストファイルの内容を連結する簡易な方法

2つのバイナリ形式のデータが出力されたテキストファイル 「C:\a.txt」「C:\b.txt」の中身を結合させて、 1つのファイル「C:\c.txt」にまとめようと思っています。 ファイルパスを指定し、CFile::OpenとCFile::Readで 一つずつファイル内容を読み出し、c.txtに書き出す方法だと少し手間がかかるので、 より簡易な方法で一つのファイルにまとめたいのですが、 何か効率的で良い方法があれば、教えていただけませんでしょうか? 例えば、Linuxでいうcatコマンドのような方法があれば理想的なのですが。。 よろしくお願い致します。 開発環境:VC++2005、MFC

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

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

 こんにちは。補足頂きました。  駄目でしたか。ファイルパスが不完全である事が考えられます。  起動したフォルダ内に置いてあれば、ファイル名の指定だけで出切る筈です。  exeファイルのあるフォルダ(\\debugフォルダの中)にa.txtとb.txtを置いて試しても無理でしょうか(成功すれば合成されたc.txtが出て来る筈です)。    此れで無理であれば、当方ではチョッと分からないです。  まあ、仮に::system()が使えなくても、其処まで拘る必要は無くて、CFileで書いた方がコードは長いですが、実行速度は速いと思います。 //以下の場合a.txtに追記 CFile dst(TEXT("a.txt"), CFile::modeWrite); CFile src(TEXT("b.txt"), CFile::modeRead); dst.SeekToEnd(); LPSTR pszBuf = (LPSTR)::malloc(src.GetLength()); src.Read(pszBuf, src.GetLength()); dst.Write(pszBuf, src.GetLength()); ::free(pszBuf);

noname#95666
質問者

お礼

exeファイルと同じ場所にテキストを置いて実行しましたが、 合成されたファイルは生成されませんでした。 しかし、CFileで書いたコードを試したところ、期待動作をさせることができました。 大変助かりました。ありがとうございました。

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

その他の回答 (3)

回答No.3

 こんばんは。以下で出来ませんか。  ::system("copy a.txt + b.txt c.txt");

noname#95666
質問者

補足

ご回答ありがとうございます。 ご教示頂いたコードそのまま実行しましたが、 テキストの内容はそのままで、期待動作となりませんでした。。 何か他に操作もしくは条件が必要なのでしょうか?

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

連結はcopyコマンドでも可能です。 copy a.txt+b.txt c.txt 又は、 copy *.txt c.txt

noname#95666
質問者

補足

ご回答ありがとうございます。 DOSプロンプト環境ではなく、C++のプログラム上で処理を行いたいのです。 情報が足りず申し訳ありませんでした。

すると、全ての回答が全文表示されます。
noname#96023
noname#96023
回答No.1

>例えば、Linuxでいうcatコマンドのような方法があれば理想的なのですが。。 windowsはtypeコマンドで

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

関連するQ&A