Tôi cũng muốn quấn printf và tìm thấy một câu trả lời hữu ích ở đây:
How to pass variable number of arguments to printf/sprintf
Tôi đã không hề hứng thú trong hoạt động (tôi chắc chắn rằng đoạn mã này có thể được cải thiện trong một số cách, cảm thấy tự do để làm như vậy :)), đây là cho debugprinting tổng quát mà thôi vì vậy tôi đã làm điều này:
//Helper function
std::string osprintf(const char *fmt, ...)
{
va_list args;
char buf[1000];
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
return buf;
}
mà tôi sau đó có thể sử dụng như thế này
Point2d p;
cout << osprintf("Point2d: (%3i, %3i)", p.x, p.y);
instead of for example:
cout << "Point2d: (" << setw(3) << p.x << ", " << p.y << ")";
Dòng C++ đẹp ở một số khía cạnh, nhưng thực tế trở nên kinh khủng nếu bạn muốn in một cái gì đó như thế này với một số chuỗi nhỏ như dấu ngoặc đơn, dấu hai chấm và dấu phẩy chèn vào giữa các số.
có thể trùng lặp của [Chuyển tiếp lời gọi hàm variadic trong C] (http://stackoverflow.com/questions/150543/forward-an-invocation-of-a-variadic-function-in-c) –
Vâng giải pháp trên đó là sử dụng vprintf, và đó không phải là trường hợp ở đây. –