使用字母的浮点值进行比较?
Using a letter's float value to compare?
本文关键字:比较 更新时间:2023-10-16
>假设我正在向浮点数输入数字,并希望在输入 q 时退出循环。我想我可以检查输入"q"时分配的值,然后在循环中进行比较,但浮点数似乎有点不精确,所以这确实有效:
int main() {
float input;
bool exit = true;
do{
cin >> input;
if (input == -1.07974e+08) {
exit=false;
continue;
}
input = 0;
} while (exit);
我能想到的唯一方法(例如,在输入数字时检查字母(是将每个输入保存为字符串,比较它,并在每次我需要处理它们时使用类似 atof(( 的东西。但是,当字母应该是例外时,为每个输入运行解析器似乎非常低效。
有什么想法吗?
如果你确定你只有一个角色需要担心,你可以使用peek()
来查看下一个角色,而无需实际使用它:
if(cin.peek() == 'q')
{
exit=false;
continue;
}
如果它比这更复杂,那么你必须首先读取一个字符串,然后解析它。
不要忘记,读取浮点数已经涉及解析它,因此主要区别在于将中间复制到字符串中,这应该不会太糟糕,因为您可能没有复制很多字符。另外,如果每次都重用相同的字符串实例,则其缓冲区也将重用。
哦,另外,您可以使用方便的小函数std::stof
将字符串解析为浮点数。
我认为你可以这样做:
int main() {
float input;
char end = 'y';
bool exit = true;
do{
cin >> input;
cout << "Do you want to continue? y/n ";
cin >> end;
if (end == 'n') exit = false;
input = 0;
} while (exit);
}
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- C++将目录中的所有文件与::filesystem进行比较
- shell排序中的交换和比较
- 如何在C++中比较两个char数组
- catch框架有没有办法比较流或文件
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 智能指针作为无序映射键,并通过引用进行比较
- 比较if语句中的数组值和int值
- 对于循环变体比较
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 比较两个大小不等的映射c++