C++,使用运算符<<构造函数的输入
In C++, using operator<< to construct input for a function
我希望能够写出这样的代码:
int n;
std::string s = "some string";
SomeFunction("hello world" << n << " " << s << std::endl);
其中SomeFunction()是其他类的方法。关键是,我希望能够使用操作符<<为某些方法构造输入,就像在c++中编写标准输出时所做的那样。我该怎么做呢?
谢谢。
你的第一个参数必须是一个重载operator<<
并构建某种参数列表的自制类型。
您的类可能包含ostream,并将operator<<
转发给它。
如果函数接受字符串而不是神秘的字符串构建对象,则需要将对象转换回字符串。
你已经可以这样做ostringstream
:
int n;
std::string s;
std::ostringstream oss;
SomeFunction( ( oss << "hello world " << n << " " << s << 'n' ).str() );
谢谢,但是这个解决方案太明显了。我正在寻找的代码保持相同的样本。- Alexander Sandler 54 secs ago
对显而易见的解决方案的令人惊讶的偏见?
如果没有您在第一个注释中描述的宏,您的语法就无法实现(通常[1])。时期。[1]在特定情况下,您可以通过重载ostream& operator<<(std::string, myspecifictype)
来强制解决这个问题。在实际操作中,这只会给您带来麻烦,因为几乎每次使用<<操作符随后会导致歧义的重载解析
相关文章:
- "error: no matching function for call to"构造函数错误
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 选择要调用的构造函数
- 如何委托派生类使用其父构造函数?
- 构造函数正在调用一个使用当前类类型的函数
- 没有用于初始化C++中的变量模板的匹配构造函数
- 初始化具有非默认构造函数的std::数组项的更好方法
- 当从函数参数中的临时值调用复制构造函数时
- 在c++构造函数中使用随机字符串生成器
- 一对向量构造函数:初始值设定项列表与显式构造
- 从构造函数抛出异常时如何克服内存泄漏
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 具有默认模板类型的默认构造函数的类型推导
- 使用dynamic_cast和构造函数时出错
- 在c++中使用向量时,如何调用构造函数和析构函数
- std::pair的默认构造函数<>将基本类型(int等)设置为零