我必须格式化std::string用sprintf,并将其发送到文件流.我怎样才能做到这一点?
我想cout输出一个带前导零的int,因此值1将打印为001,值25打印为025.我怎样才能做到这一点?
也许这是一个愚蠢的问题,但有没有办法将布尔值转换为字符串,使得1转为"true",0转为"false"?我可以使用if语句,但很高兴知道是否有办法用语言或标准库来实现.另外,我是一个学生.:)
如何使用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年提出这个问题时无法使用的功能.
如果我将任意数量的操纵器应用于流,是否有办法以通用方式撤消这些操纵器的应用程序?
例如,请考虑以下事项:
#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#中你可以使用String.Format方法.但是你如何在C++中做到这一点?是否有一个函数允许我将一个字节转换为十六进制?只需将8字节长的数据转换为Hex,我该怎么做?
我希望在比较期间控制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.你能帮忙吗?
谢谢.
我有一行代码在我的输出中将填充值设置为' - '字符,但需要将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)
我走错了路吗?