我有点被困在了C++ 11之前的地方。我如何编写一个函数,它接受n个字符串并将它们附加到strings流中?
void Foo(std::string first_part, ...){
std::ostringstream oss;
oss << first_part << ...; // cant do it
for(int i = 0; i < ....length(); i++){ // :|
}
}如果我生活在一个完美的世界里,我可以做到以上几点。在C++ 11之前,有没有其他方法遍历...参数?
发布于 2018-12-22 04:57:10
抱歉,但它不能直接完成(至少不能在可移植代码中)。
尝试将非平凡类型(包括std::string)作为可变参数传递会导致未定义的行为。
如果您想做一些类似的事情,您可以(举个例子)传递许多字符串的地址,而不是尝试传递字符串本身。
如果这样做,您仍然必须处理另一个细节:您将需要告诉接收函数期望的字符串数量(地址)。
从那里,接收函数将使用va_start、va_arg和va_end来检索数据并对其进行处理。
https://stackoverflow.com/questions/53890618
复制相似问题