2011-07-05 41 views
0

2つの列を含む.txtファイルがあります。私は、最初の列のパターンを検索し、一致するファイルからその行を削除する必要があります。system()関数内でC++変数を使用する方法

私はこれをC++プログラムの中で行う必要があります。

使用できるオプションは何ですか?

私はsystem()関数を使い、sed(効率的と思われます)を呼び出します。しかし、システム内でsedを使う方法がわかりません()。 検索パターンは、C++の変数であると私は内側にそれを挿入するかどうかはわかりませんが、私はそれがこのフォームを取ることができる知っているが、私のようにC++の変数を使用する方法についてのあなたから任意の助けを、感謝

int pattern; 
. 
. 
. 

system ("sed -i '/pattern/d' file.txt"); 

をセッドsed内の検索パターン

+1

sedには挿入しないで*文字列*に挿入します。それは役に立ちますか? –

+0

"私はこれをC++プログラムの中でやる必要があります。" - um。これが割り当てにあるとすれば、あなたのC++プログラムを 'sed'を起動する栄光のシェルスクリプトとして使うことは重要ではないかもしれません。あなたが知っているツールを再利用するための完全なマークですが、実際のパターンマッチングコードをC++で書くか、C++の正規表現ライブラリを使用することを期待するかもしれません。パターンが部分文字列ではなく正規表現であれば見つけなければならない。あなたが 'sed'を使うことが許されていれば、その論理的極端さをすべての代入にすることは、コマンドライン引数を直接Pythonスクリプトに渡すことで" C++で解決 "することができます... –

+0

@Steve:Sir、Sir assignemnt。私はOOPSでプログラミングを経験するためにこれを自分でやっています。正規表現のライブラリは私の心を渡っていませんでした。私は将来の使用のためにそれを覚えておきます。ありがとう! –

答えて

3

std :: stringでアセンブルしてからc_str()を使います。文字列の組み立てに便利なostringstream(sstreamヘッダーから)を見つけることができます。

+0

ありがとうございます。私はこのオプションを調べます –

0
std::string s = "sed -i '/" + pattern + "/d' file.txt"; 

system(s.c_str()); 
+0

ありがとう!私はこれを試してみます –

+0

あなたはシステム(s.c_str())を使用する必要があります – John

+0

はい@ジョンです。一定。 –

関連する問題