相关疑难解决方法(0)

用于在任何基础中流式传输整数的自定义流操纵器

例如,我可以使用std::ostream十六进制的对象输出整数

std::cout << std::hex << 0xabc; //prints `abc`, not the base-10 representation
Run Code Online (Sandbox Code Playgroud)

所有基地都有通用的操纵器吗?就像是

std::cout << std::base(4) << 20; //I want this to output 110
Run Code Online (Sandbox Code Playgroud)

如果有,那我就没有其他问题了.如果没有,那我可以写一个吗?它不会要求我访问私人实施细节std::ostream吗?

请注意,我知道我可以编写一个带有数字的函数,并将其转换为字符串,该字符串是任何基数中该数字的表示.或者我可以使用已经存在的.我问的是自定义流操纵器 - 它们可能吗?

提前致谢

c++ iostream

13
推荐指数
1
解决办法
5845
查看次数

解决std :: showbase没有前缀为零的问题

无法在线寻求帮助.有没有办法解决这个问题?

std::showbase仅增加了一个前缀(例如,0x在以下情况下std::hex)为非零数(如所解释这里).我想要一个格式化的输出0x0,而不是0.

但是,仅使用:std::cout << std::hex << "0x" << ....不是一个选项,因为右侧参数可能并不总是整数(或等价物).我正在寻找一个showbase替换,它将前缀为0 0x而不是扭曲非int(或等价物),如下所示:

using namespace std;

/* Desired result: */
cout << showbase << hex << "here is 20 in hex: " << 20 << endl; // here is 20 in hex: 0x14

/* Undesired result: */
cout << hex << "0x" << "here is 20 in hex: " << 20 << endl;     // 0xhere is 20 in hex: …
Run Code Online (Sandbox Code Playgroud)

c++ std c++11

6
推荐指数
1
解决办法
607
查看次数

std :: setw,std :: setfill等的实际返回类型是什么?

我很好奇std :: setw和std :: setfill的真正返回类型

如我们所见,引用的返回值的数据类型为“未定义”。但是,是否可以声明没有返回类型的函数?

在这种情况下,我必须开发一种为“ cout”或“ cin”提供扩展功能的方法,并且该方法应称为

cout << foo(32, 'A', 0.00f) << "Hello world!";
Run Code Online (Sandbox Code Playgroud)

我应该如何声明该方法?

c++

1
推荐指数
1
解决办法
115
查看次数

标签 统计

c++ ×3

c++11 ×1

iostream ×1

std ×1