c++i/o流格式化输出问题
究竟什么是格式状态字(一些地方叫状态标志字),什么是格式控制标志(一些地方叫格式化标志),书上说格式状态字是一个long,long上的每一位对应一个格式控制标志,可格式化...
究竟什么是格式状态字(一些地方叫状态标志字),什么是格式控制标志(一些地方叫格式化标志),书上说格式状态字是一个long,long上的每一位对应一个格式控制标志,可格式化函数的行参是long,调用时实参确是格式控制标志,这表明标志也是一个long,那么状态字与标志之间到底是什么关系呢?搞了一天,求解救
我有强烈需要解决这问题啊啊啊啊啊 展开
我有强烈需要解决这问题啊啊啊啊啊 展开
1个回答
展开全部
“可格式化函数的行参是long”
请给出这个所谓“可格式化函数”的原型?不是很清楚题主具体在说什么函数。
请给出这个所谓“可格式化函数”的原型?不是很清楚题主具体在说什么函数。
更多追问追答
追问
是格式化函数,就是那个 long setf(long a,long b),某一调用 setf(ios::hex , ios::basefield) 这不是说明格式控制标志 ios::hex和ios::basefield 是long吗?
求这位高手说下你对这两概念理解
追答
long有32个bit组成。当然具体位数跟系统有关,不妨碍我们明白道理。
这32个bit各自都可以表示两种状态,未设置/已设置。将整个long变量称为一个 状态字。
为了将状态字中的一个bit置1,用按位或操作:(这里只写了4bit示意)
0000 | 0001 = 0001
“|”的左边是状态字,右边是参数,=右边是新的状态字。注意参数只有一个bit是1,因此我们可以有32个不同的参数。
为了将状态字中的一个bit置0,用按位与操作:
0001 & (1110) = 0000
“|”的左边是状态字,右边是参数按位取反的结果。=右边就变回了原来的状态字
这就是关于状态字的操作。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询