c++ - 在 C++ 中,使用 operator<< 构造函数的输入

标签 c++ stl stream operators operator-overloading

我希望能够编写如下代码:

int n;
std::string s = "some string";
SomeFunction("hello world" << n << " " << s << std::endl);

其中 SomeFunction() 是某个其他类的方法。关键是我希望能够使用 operator<< 为特定方法构造输入,就像在 C++ 中写入标准输出时所做的那样。我该怎么做?

谢谢。

最佳答案

您的第一个参数必须是重载 operator<< 的自制类型并构建某种参数列表。

您的类可能包含一个 ostream 并转发 operator<<

如果该函数采用字符串而不是神秘的字符串构建对象,则您需要将对象转换回字符串。

您可以通过 ostringstream 提前完成像这样:

int n;
std::string s;
std::ostringstream oss;
SomeFunction( ( oss << "hello world " << n << " " << s << '\n' ).str() );

关于c++ - 在 C++ 中,使用 operator<< 构造函数的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614842/

相关文章:

c++ - 如何为 noexcept 函数指针创建别名?

hash - 为什么 hastable 的 rehash 复杂度在最坏的情况下可能是二次方的

qt - 将 std::ostream 转换为某个数组?

Java:文件类型为 `url.openStream()`

c++ - 将 OpenGL 纹理打印到文件而不显示?

c++ - 如何让 QSpinBox 在满时插入?

java - StreamTokenizer无输入怎么解决

java - 如何使用 API 和 Glide 查看图像信息何时丢失

c++ - 在 C++ 中转义外部代码块

c++ - 为什么 erase+remove 比 remove 更高效