关于格式化输出的“noshowbase”的用法,怎么老是出错呢?谢谢
看的《C++Primer》的附录关于IO部分。说COUT默认是noshowbase的,我用了showbase后想恢复,为什么会出错呢?
代码如下:
#include<iostream>
int main(void)
{
std::cout << "Enter a number: " << std::endl;
int i;
std::cin >> i;
std::cout << std::ios::showbase << i << std::ios::noshowbase<<std::endl;
return 0;
}
编译器给出的错误信息如下(Visual Studio 2013):
1>------ 已启动生成: 项目: Test2, 配置: Debug Win32 ------
1> main.cpp
1>y:\private\practise\cpp\test2\test2\main.cpp(9): error C2039: “noshowbase”: 不是“std::basic_ios<char,std::char_traits<char>>”的成员
1>y:\private\practise\cpp\test2\test2\main.cpp(9): error C2065: “noshowbase”: 未声明的标识符
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
[解决办法]
// modify showbase flag
#include <iostream> // std::cout, std::showbase, std::noshowbase
int main () {
int n = 20;
std::cout << std::hex << std::showbase << n << '\n';
std::cout << std::hex << std::noshowbase << n << '\n';
return 0;
}