我有点陷入C ++ 11之前的时代。我该如何编写一个将n个字符串附加到ostreamstream的函数?
void Foo(std::string first_part, ...){
std::ostringstream oss;
oss << first_part << ...; // cant do it
for(int i = 0; i < ....length(); i++){ // :|
}
}
如果我生活在一个完美的世界中,我可以做到以上几点。在C ++ 11之前,还有其他方法可以循环通过...
参数吗?
答案 0 :(得分:1)
对不起,但这不能直接完成(至少不能在可移植代码中完成)。
尝试将非平凡类型(包括std :: string)作为可变参数传递给未定义行为。
如果您想做类似的事情,可以(例如)传递多个字符串的地址,而不是尝试自己传递字符串。
如果这样做,您仍然需要解决另一个细节:您需要告诉接收函数期望的字符串(地址)数。
从那里,接收函数将使用va_start
,va_arg
和va_end
来检索数据并由它们来处理。