C++;向字符串流添加n个字符串 我有点被困在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++){ // :| } } void Foo(标准::字符串第一部分,…){ std::ostringstream oss; oss

C++;向字符串流添加n个字符串 我有点被困在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++){ // :| } } void Foo(标准::字符串第一部分,…){ std::ostringstream oss; oss,c++,C++,抱歉,但不能直接完成(至少不能在可移植代码中) 尝试将非平凡类型(包括std::string)作为变量参数传递会导致未定义的行为 如果您想做类似的事情,您可以(例如)传递多个字符串的地址,而不是试图传递字符串本身 如果这样做,还需要处理另一个细节:需要告诉接收函数预期的字符串(地址)数量 从那里,接收函数将使用va_start、va_arg和va_end来检索数据并处理它们。为什么要使用可变参数?您接受的参数数量有上限吗?因为有更好的方法来满足您的需求(即std::vector)。您确定没有将C

抱歉,但不能直接完成(至少不能在可移植代码中)

尝试将非平凡类型(包括std::string)作为变量参数传递会导致未定义的行为

如果您想做类似的事情,您可以(例如)传递多个字符串的地址,而不是试图传递字符串本身

如果这样做,还需要处理另一个细节:需要告诉接收函数预期的字符串(地址)数量


从那里,接收函数将使用
va_start
va_arg
va_end
来检索数据并处理它们。

为什么要使用可变参数?您接受的参数数量有上限吗?因为有更好的方法来满足您的需求(即
std::vector
)。您确定没有将C++11可变模板()与纯C可变函数()混淆?它们看起来可能相似,但完全不同。