我检查了Stack和其他站点上的很多链接。它大部分是做它应该做的事情,但不是“完全”我想做什么。这是我在网上找到的问题和最佳解决方案。 我想输入一个数字,例如浮点数和输入应该检查,如果是浮动或不。 我正在使用这个在线发现的代码片段。另外要提到的是,我需要重复验证,每次迭代它的循环。“n”在这个函数之前单独输入,并且它在“private”中。它完美地完成了它的工作,除非...如果输入“55”(号码),它会检查并验证。没关系。 如果您输入“dfgfd”(不是数字),它会检查并重复提问。没关系。 如果您输入“dfgdfgdg55”,它将检查并重复提问。这也没关系。如果你输入“55dfgfd”的东西,它会检查并不重复。这是不正确的。它只是丢弃数字后的字符。我也想丢弃这个。所以正确的输入应该是只输入“55”(数字55只是提示时输入的示例数字)。我也尝试了一个更简单的函数“模式”。首先输入“55”,然后输入“55gdf”。他们在屏幕上呈现为“55”和“55”。然后我添加了一些代码来比较这些数字。他们是不一样的!如何检查输入值是否在C++中有效值
#include <iostream>
using namespace std;
int Provera_kucanja()
{
cout<<endl;
cout<<"Input boundary for an array"<<endl;
cin>>n;
while (cin.fail() || !(n>0))
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout<<"You didnt entered number, please try again... "<<endl;
cin>>n;
}
cout<<endl;
return 0;
}
float Unos_brojeva()
{
cout<<"\n";
cout<<"Now you must enter number into array:\n "<<endl;
for (int i = 0; i < n ; i++)
{
cout<<"Input "<<"["<<i<<"]"<<" number in array: ";
float r;
cin>>r;
while (cin.fail())
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout<<"You didnt entered number, please try again... "<<endl;
cout<<"Input "<<"["<<i<<"]"<<" number in array: ";
cin>>r;
}
unos[i]=r;
}
cout<<endl;
cout<<"Now show unsorted array members: "<<endl;
for(int i = 0; i < n; i++)
{
cout<<"This is "<<"["<<i<<"]"<<" member of array named 'unos': "<<unos[i]<<endl;
}
cout<<"\n"<<endl;
cin.get();
return 0;
}
int main(){
Provera_kucanja();
Unos_brojeva();
}
在使用建议答案的方面是,当用户输入像“ghfg”这样的东西时,这个转换的结果是一个ZERO !.所以建议的答案是没有去的。
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
int main()
{
string A_number;
char* An_array=new char[A_number.length()];
cout<<"Enter value for A_number: ";
cin>>A_number;
strcpy(An_array,A_number.c_str());
float n=atof(An_array);
cout<<"Value entered is: "<<n;
cin.get();
return 0;
}
确切的问题是,当我输入55ffghfg的东西是“ffghfg”传递给数组中的下一个成员作为一个值,因此这种行为导致那是第一个数字是55(多数民众赞成),但创建错误,它重复输入下一个成员,即使这个数字还没有输入! – 2014-08-30 23:23:56
这就是'cin'所做的。它只是试图读取你要求的数据类型(在本例中为float),如果它得到一个,输入指针停留在输入数据的下一个字节。如果你想消耗行的其余部分,你需要读取一个字符串,直到包括换行符后,你得到你的浮动。 – par 2014-08-30 23:26:56
我刚刚将我的提示翻译成英文。 – 2014-08-30 23:57:53