gpt4 book ai didi

c++ - 如何将 cin 转换为 int _value :1; C++

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:06 25 4
gpt4 key购买 nike

我试过一个代码,它想用 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;
}
}

感谢任何有小费的人。!!

最佳答案

struct SoNguyen{
int _value:1;
void Input(){
int value;
std::cin >> value;
_value = value;
}
void Output(){
std::cout << _value;
}
};

顺便说一句,整数不是 1 字节而是 1 位宽(想想他们为什么称此功能为位域)。然而,位字段是不好的编程习惯,应该尽可能避免。如果您需要一个宽度为 1 字节的成员,那么最好使用 std::int8_tsigned 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;
}

因此它看起来很直观(因为相同的语法也适用于基本类型)和模块化(您可以写入和读取任何流)。

关于c++ - 如何将 cin 转换为 int _value :1; C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com