在C++中,要以十六进制打印数字,请执行以下操作:
int num = 10;
std::cout << std::hex << num; // => 'a'
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建一个只需要向流添加内容的操纵器:
std::ostream& windows_feed(std::ostream& out)
{
out << "\r\n";
return out;
}
std::cout << "Hello" << windows_feed; // => "Hello\r\n"
Run Code Online (Sandbox Code Playgroud)
但是,如何创建一个像"十六进制"一样修改项目中的项目的操纵器?举个简单的例子,我如何在这里创建plusone操纵器?:
int num2 = 1;
std::cout << "1 + 1 = " << plusone << num2; // => "1 + 1 = 2"
// note that the value stored in num2 does not change, just its display above.
std::cout << num2; // => "1"
Run Code Online (Sandbox Code Playgroud) 我想为ostream实现一个自定义操纵器,对插入到流中的下一个项目进行一些操作.例如,假设我有一个自定义操纵器引用:
std::ostringstream os;
std::string name("Joe");
os << "SELECT * FROM customers WHERE name = " << quote << name;
Run Code Online (Sandbox Code Playgroud)
操纵者引用将引用名称以产生:
SELECT * FROM customers WHERE name = 'Joe'
Run Code Online (Sandbox Code Playgroud)
我该如何完成呢?谢谢.
我知道在c ++中我们可以使用像ios :: showbase这样的状态标志来格式化输出/输入...我知道我们可以将basefield的标志设置为hex,oct,dec但是有bin吗?以及如何格式化二进制basefield中的整数?