我写了一个程序来打印十六进制值,八进制值和相应的字符,用连字符分隔,用于40到126之间的ASCII值(包括两者).我的代码是:
#include<iostream>
using namespace std;
int main()
{
int i;
char c;
for(i=40;i<=126;i++)
{
c=i;
cout<<i<<"-"<<hex<<i<<"-"<<oct<<i<<"-"<<c<<"\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但在这里有一些i
滑雪的价值.即58,59不打印.我想打印40到126范围内的所有值.有什么建议吗?
awe*_*oon 14
如果要首先打印为十进制,则应添加std::dec
流操纵器:
cout << dec << i << "-" << hex << i << "-" << oct << i << "-" << c << "\n";
// ^^^
Run Code Online (Sandbox Code Playgroud)
因为在第一次循环迭代之后,标志std::ios_base::oct
oct`仍然存在.
您用于每次调用的最后一个操纵器cout
是oct
,并且流"记住" - 因此,当您i
在没有操纵器的情况下输出下一次时,它仍然oct
用作输出格式.只需dec
明确使用第一个输出i
:
cout << dec << i << "-" << hex << i << "-" << oct << i << "-" << c <<"\n";
Run Code Online (Sandbox Code Playgroud)