gpt4 book ai didi

c++ - 在 C++ 中验证 double

转载 作者:行者123 更新时间:2023-11-28 03:13:20 25 4
gpt4 key购买 nike

我对编码完全陌生,所以在发表评论之前请记住这一点。

所以我已经尝试了一段时间的编码,今天我去了图书馆并拿起一本名为“C++编程”的书。我写了一些基本的程序,但我曾一度陷入困境,我不知道如何创建一个函数确保当提示用户输入双倍时,他们输入的内容是有效的。(如果用户输入像“k”这样的字符,程序就会中断)。我在这里和网上搜索过,有一些答案,但它们更多“这是一行有效的代码,将 x、y、z 插入其中”。而我不有足够的经验知道该怎么做。所以这是一个混合代码的示例来自另一个问题,我未能尝试使其在我的程序中工作:

#include <iostream>
#include <stdio.h>


using namespace std;

double GetDouble () {
double x;
cin >> x;
int valid = 0;
while (valid == 0) {
if (x == double) {
return x;
break;
} else if (x != double) {
cout << "Invalid Input! Please input a numerical value." << endl;
cin.clear();
while (cin.get() != '\n') ; // empty loop
}
}
return x;
}

现在我想让它做的是使用“cin << x”来获取 x 的用户输入,然后然后确保 x 是 double ,而我在这方面非常失败。如果有人可以以澄清每个操作的方式解释这一点,我将不胜感激。例如,我不知道 break 函数是做什么的,以及 cin.clear() 和 cin.get() 的作用。 (我知道这是重复的,但是另一个问题的答案根本没有解决我感到困惑的问题,感谢您花时间阅读并回答这个问题! :)

最佳答案

这似乎与您的(大部分)有效的代码非常相似:

double GetDouble () {
double x;
cin >> x;
// ver1: while( cin.fail() ) // or !cin.good() no trailing char check.
while( cin.fail() || (cin.peek() != '\r' && cin.peek() != '\n'))
{
cout << "Invalid Input! Please input a numerical value." << endl;
cin.clear();
while( cin.get() != '\n' ); // or cin.ignore(1000, '\n');
cin >> x;
}
return x;
}

关于c++ - 在 C++ 中验证 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750872/

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