我熟悉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;
我不想做任何类型的处理,我只是想读取整个调用并将其存储在一个数组字符串中。
我熟悉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;
我不想做任何类型的处理,我只是想读取整个调用并将其存储在一个数组字符串中。
尽我所能理解您的要求,但在标准C++ 03中是不可能的。最密切相关的C++的功能是预处理器宏参数字串,这将允许这样的事情:
#define ABC(X) do { remember_string_version(#X); abc X; } while (false)
ABC(("%d %d %d how are you",1,2,3));
注意双括号 - 这组字符串和号码,以便它们匹配的一个参数“X”由ABC预期。
预处理字串是只设施,让您保存的源代码片断一些作为一个字符串,同时还用它作为源代码....
这是编译器的依赖性,虽然在理论上,你可以做在实践中,它很可能不便携。你可以在编译时通过宏,如@Tony提到的,但在运行时 - 使用va_arg
。它基本上实现了你想要的,并且是由标准提供的工具,以便与这种依赖于编译器的功能接口。
嗯,也许检查vsnprintf。我认为有一个例子就像你想在我链接的页面里面做的事情。 http://msdn.microsoft.com/en-us/library/1kt27hek.aspx – Lefteris 2012-04-09 07:13:31
@Lefteris我不想输出任何数据,我只是想完全存储它,因为我想在后来的阶段处理它 – hardyz009 2012-04-09 07:20:51