我发现自己经常使用包含非常小的数字范围(通常从1到10)的变量,并希望通过使用char数据类型而不是int甚至是short来最小化我使用的内存量。我想将cin值转换为char变量,而无需将cin转换为ASCII等效值,也无需使用单引号。即,以下内容:
cout<< "Pick from 1 to 10.";
char selection;
cin>> selection;
if (selection == 1) return 1;
Run Code Online (Sandbox Code Playgroud)
等等...
有一种通用的方法吗?同样,我不想使用单引号。
谢谢
您可以创建一个小实用函数:
struct CharReader {
char &c;
CharReader(char &c) : c(c) {}
};
CharReader asNumber(char &c) {
return CharReader(c);
}
template <typename T, typename Traits>
std::basic_istream<T, Traits>& operator>> (std::basic_istream<T, Traits> &str, const CharReader &c) {
short i;
str >> i;
c.c = static_cast<char>(i);
return str;
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:
char selection;
std::cin >> asNumber(selection);
Run Code Online (Sandbox Code Playgroud)
Kin*_*hen -1
也许你应该尝试
if (selection - '0' == 1) return 1;
Run Code Online (Sandbox Code Playgroud)
这是根据您的情况最简单的方法