相关疑难解决方法(0)

像sprintf一样的std :: string格式

我必须格式化std::stringsprintf,并将其发送到文件流.我怎样才能做到这一点?

c++ string formatting stl

412
推荐指数
17
解决办法
77万
查看次数

249
推荐指数
7
解决办法
7万
查看次数

使用cout << operator时,如何使用前导零填充int?

我想cout输出一个带前导零的int,因此值1将打印为001,值25打印为025.我怎样才能做到这一点?

c++ formatting cout

232
推荐指数
5
解决办法
20万
查看次数

C++ cout十六进制值?

我想要做:

int a = 255; 
cout << a;
Run Code Online (Sandbox Code Playgroud)

并在输出中显示FF,我该怎么做?

c++ hex cout

137
推荐指数
10
解决办法
21万
查看次数

在C++中将bool转换为文本

也许这是一个愚蠢的问题,但有没有办法将布尔值转换为字符串,使得1转为"true",0转为"false"?我可以使用if语句,但很高兴知道是否有办法用语言或标准库来实现.另外,我是一个学生.:)

c++ string boolean

86
推荐指数
6
解决办法
14万
查看次数

std :: ostream的浮点格式

如何使用std :: cout执行以下操作?

double my_double = 42.0;
char str[12];
printf_s("%11.6lf", my_double); // Prints " 42.000000"
Run Code Online (Sandbox Code Playgroud)

我准备放弃并使用sprintf_s.

更一般地说,我在哪里可以找到std :: ostream格式的引用,它在一个地方列出所有内容,而不是在长篇教程中全部展开?

编辑2017年12月21日 - 请参阅下面的答案.它使用了我在2012年提出这个问题时无法使用的功能.

c++ floating-point cout ostream

38
推荐指数
5
解决办法
6万
查看次数

"回滚"或撤消任何适用于流的操纵器,而不知道机器人是什么

如果我将任意数量的操纵器应用于流,是否有办法以通用方式撤消这些操纵器的应用程序?

例如,请考虑以下事项:

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    cout << "Hello" << hex << 42 << "\n";
    // now i want to "roll-back" cout to whatever state it was in
    // before the code above, *without* having to know 
    // what modifiers I added to it

    // ... MAGIC HAPPENS! ...

    cout << "This should not be in hex: " << 42 << "\n";
}
Run Code Online (Sandbox Code Playgroud)

假设我想添加代码MAGIC HAPPENS,将流操纵器的状态恢复到我之前的状态cout << hex.我不知道我添加了什么操纵器.我怎么能做到这一点?

换句话说,我希望能够写出这样的东西(psudocode/fantasy …

c++

35
推荐指数
5
解决办法
9588
查看次数

如何以十六进制打印字节?

我知道在C#中你可以使用String.Format方法.但是你如何在C++中做到这一点?是否有一个函数允许我将一个字节转换为十六进制?只需将8字节长的数据转换为Hex,我该怎么做?

c++ bytearray type-conversion data-conversion

28
推荐指数
5
解决办法
10万
查看次数

设置回默认精度C++

我希望在比较期间控制double的精度,然后使用C++返回默认精度.

我打算用来setPrecision()设定精度.那么将精度设置回默认值的语法是什么(如果有的话)?

我正在做这样的事情

std::setPrecision(math.log10(m_FTOL));
Run Code Online (Sandbox Code Playgroud)

我做了一些事情,之后我想回到默认的双重比较.

我这样修改了,我还有一些错误

std::streamsize prec = std::ios_base::precision();
std::setprecision(cmath::log10(m_FTOL));
Run Code Online (Sandbox Code Playgroud)

cmath编译时为false,编译时为std::ios_basefalse.你能帮忙吗?

谢谢.

c++ floating-point precision default rounding

20
推荐指数
3
解决办法
3万
查看次数

C++ - 如何重置输出流操纵器标志

我有一行代码在我的输出中将填充值设置为' - '字符,但需要将setfill标志重置为其默认的空白字符.我怎么做?

cout << setw(14) << "  CHARGE/ROOM" << endl;
cout << setfill('-') << setw(11) << '-' << "  " << setw(15) << '-' << "   " << setw(11) << '-' << endl;
Run Code Online (Sandbox Code Playgroud)

我认为这可行:

cout.unsetf(ios::manipulatorname) // Howerver I dont see a manipulator called setfill
Run Code Online (Sandbox Code Playgroud)

我走错了路吗?

c++ manipulators

17
推荐指数
3
解决办法
2万
查看次数