2012-04-09 13 views
1

私はva_argリストに精通しています。私はva_list入力全体を取得する方法

のような任意の処理をせずに文字列には、このコール全体を渡すことが可能である場合はコンマ

例:

abc("%d %d %d how are you",1,2,3); 

は私が知りたいの後、我々は値をフェッチすることができ、それを通して方法がある知りたいと思いました

string [1]="%d %d %d how are you",1,2,3; 

何らかの処理をしたくない場合は、単に呼び出し全体を読み取り、配列の文字列に格納するだけです。私はあなたの条件を理解することができる最高のよう

+0

おそらく、vsnprintfをチェックしてください。私はあなたがリンクしているページの中で何をしたいかのような例があると思います。 http://msdn.microsoft.com/en-us/library/1kt27hek.aspx – Lefteris

+0

@Lefteris私は – hardyz009

答えて

1

、それは、標準C++ 03には不可能です。彼らはABCが期待する単一のパラメータ「X」に一致するように、これらのグループの文字列と数字 -

#define ABC(X) do { remember_string_version(#X); abc X; } while (false) 

ABC(("%d %d %d how are you",1,2,3)); 

注重括弧:最も密接に関連C++の機能は、このような何かをできるようになるプリプロセッサマクロ引数の文字列化であり、 。

プリプロセッサ文字列化がまだソースコードとしてそれを使用しているときに、文字列としてソースコードのいくつかのスニペットを保存することができますだけ施設です....

+0

私はないんだけど、後の段階でそれを処理するように、出力に私は単にそれを完全に保存したい任意のデータをたくありませんOPがソースコードの文字列を保存したかったと確信しています。OPは、実行時にそれらを処理せずにパラメータを "記憶"したいと思っています。 – littleadv

+0

なるほど私はちょうどレムはそれを試してみて、それを動作させる答えを後でprocess.Thanks上の文字列全体を取得する必要があるとするのでそれが私の目的を解決するべきだと思います:) – hardyz009

+0

@Tonyデルロイ {remember_string_version(#X)を行います。 abc X; } while(false)//このコード行の使い方 – hardyz009

0

これはコンパイラに依存しており、理論的にはあなたが行うことができながら、実際には移植可能ではない可能性が高い。 @Tonyが言いましたが、実行時には、va_argを使用して、マクロを使用してコンパイル時に実行できます。基本的には、あなたが望むものを実装し、このコンパイラ依存の機能にインターフェイスするために標準によって提供されるツールです。

関連する問題