我必须格式化std::string
用sprintf
,并将其发送到文件流.我怎样才能做到这一点?
所以我已经得到了我最后一个问题的答案(我不知道为什么我没有想到这一点).当我没想到它的时候,我正在打印一个圆润的double
使用cout
.如何使用全精度cout
打印double
?
假设我有这样的代码:
void printHex(std::ostream& x){
x<<std::hex<<123;
}
..
int main(){
std::cout<<100; // prints 100 base 10
printHex(std::cout); //prints 123 in hex
std::cout<<73; //problem! prints 73 in hex..
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在从函数返回后,是否有任何方法可以将cout的状态"恢复"到原来的状态?(有点像std :: boolalpha和std :: noboolalpha ..)?
谢谢.
#include <stdio.h>
int main() {
float k;
scanf("%f", &k);
printf("%f", k);
}
Run Code Online (Sandbox Code Playgroud)
在这个简单的程序中,当我输入一个包含最多8位数的数字时,它会正确显示.
但如果我超过8位,即输入123456789
输出123456792
.
为什么会这样?那么有趣的事实是,如果我输入的任何数字,123456789
并且123456796
然后它总是显示123456792
.
它是否与浮点数的8位小数精度有关?