我尝试了一个代码,它想要使用1个字节的整数来保存数字,如何使用 cin 获取值,使用 cout
struct SoNguyen{
int _value:1;
void Input(){
// How I can cin value to _value;
}
void Output(){
// How I can cout value of _value;
}
}
任何人都有提示。!!
答案 0 :(得分:3)
struct SoNguyen{
int _value:1;
void Input(){
int value;
std::cin >> value;
_value = value;
}
void Output(){
std::cout << _value;
}
};
整数不是1字节而是1位宽(想想为什么他们称这个功能位字段)。然而,位字段是糟糕的编程习惯,应尽可能避免。如果您需要宽度为1个字节的成员,请使用std::int8_t
或signed char
。如果你需要宽度为1位的那个,使用bool
(即使你浪费了7位,它在现代平台上并不重要)。
实现类的输入/输出的更类似C ++的方法将包含运算符:
struct SoNguyen{
int _value:1;
};
template<typename CharT, typename CharTraits>
std::basic_istream<CharT, CharTraits>& operator>> (std::basic_istream<CharT, CharTraits>& Stream, SoNguyen& Object)
{
int Value;
Stream >> Value;
Object._value = Value;
return Stream;
}
template<typename CharT, typename CharTraits>
std::basic_ostream<CharT, CharTraits>& operator<< (std::basic_ostream<CharT, CharTraits>& Stream, SoNguyen const& Object)
{
return Stream << Object._value;
}
调用语法如下所示:
int main()
{
SoNguyen foo;
std::cin >> foo;
std::cout << foo;
}
因此它看起来很直观(因为相同的语法也适用于基本类型)和模块化(您可以写入和读取任何流)。
答案 1 :(得分:2)
您必须阅读基本类型 - int
,char
或short
。然后将基元类型分配给位字段。
void Input() {
int i;
std::cin >> i;
_value = i;
}
或
void Input() {
short i;
std::cin >> i;
_value = i;
}
等
输出很直接。
void Output() {
std::cout << _value;
}