我必须格式化std::string
用sprintf
,并将其发送到文件流.我怎样才能做到这一点?
假设我有这样的代码:
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 ..)?
谢谢.
如何使用cout打印0x0a而不是0xa?
#include <iostream>
using std::cout;
using std::endl;
using std::hex;
int main()
{
cout << hex << showbase << 10 << endl;
}
Run Code Online (Sandbox Code Playgroud) 在示例c ++代码中,我将打开一个文件并打印六进制文件中的每个字符只有16个字符,但为什么ffffff会在每个heax值后打印?
char buff[256];
// buff filled with fread
for(i=0;i<16;i++)
printf("%x",buff[i]);
Run Code Online (Sandbox Code Playgroud)
输出是:
4affffff67ffffffcdffffff
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
有没有一种简单的方法来操作 std::cout 以便它以十六进制表示形式打印双打?换句话说,相当于:
printf("%" PRIx64, *reinterpret_cast<uint64_t *>(&my_double));
Run Code Online (Sandbox Code Playgroud)
为了提供一些上下文,我有一个程序可以打印数百个浮点结果,我想知道是否有一种神奇的单行 hack 可以以十六进制打印所有这些结果。
我的问题不是关于使用不区分大小写的 std::unordered_set ,而是它是如何工作的?
#include "stdafx.h"
#include <string>
#include <iostream>
#include <unordered_set>
#include "boost/algorithm/string.hpp"
struct case_insensitive_comparer
{
bool operator () (const std::string& x, const std::string& y) const
{
return boost::iequals(x, y);
}
};
using case_insensitive_set = std::unordered_set<std::string, std::hash<std::string>, case_insensitive_comparer>;
std::vector<std::string> permute_case(const std::string& s)
{
std::vector<std::string> strs;
// Iterate through all bitmasks, 1 for uppercase, 0 for lowercase
int msb = 1 << (s.length() - 1);
int upper = 1 << s.length();
std::locale loc;
for (int i = 0; i < upper; …
Run Code Online (Sandbox Code Playgroud) 我想让一个数字出现在十六进制字母表中,但我不知道如何.
例如,我使用数字255.我希望数字显示为"FF FF",但它显示为"15 15"
number是我想要转换的数字
base是所需的字母(bin,dec,oct,hex)
str是带数字的表
数字是我有多少位数
# include <iostream>
using namespace std;
class Number
{
private:
int number;
int base;
int str[80];
int digits;
void convert();
public:
Number(int n);
Number(int n,int b);
Run Code Online (Sandbox Code Playgroud)
printNumber打印数字
void printNumber();
};
Run Code Online (Sandbox Code Playgroud)
convert是转换数字的函数
void Number::convert()
{
int icount=0;
int x=number;
while(x!=0)
{
int m=x % base;
x=x/base;
str[icount]=m;
icount=icount+1;
}
Run Code Online (Sandbox Code Playgroud)
数字计算我拥有的位数
digits=icount;
}
Run Code Online (Sandbox Code Playgroud)
此函数用作基数dec
Number::Number(int n)
{
number=n;
base=10;
convert();
}
Run Code Online (Sandbox Code Playgroud)
此函数使用整数b作为基数
Number::Number(int n,int b)
{
number=n;
base=b;
convert();
}
void Number::printNumber()
{
int …
Run Code Online (Sandbox Code Playgroud)