BIG編輯:我加入並現在檢測到字符串輸入:)!在C++中的字符串,int和float驗證
if (false == isdigit(grade[0])
編輯:問題:無法確定如果我把一個字符串,而不是一個浮動或int。
我一直在尋找所有通過這個網站,並有很多關於檢查字符串輸入發佈。這是我試圖將我所學到的一切結合起來,正如你所看到的那樣,它並沒有做我想做的事情。
這些投入會發生什麼:
用戶輸入: 「1.2」:可以告訴它是一個浮動
用戶輸入: 「1」:可以告訴它是一個INT
用戶輸入:「一個「:錯誤:認爲這是一個浮動。這就是問題。如果我輸入'a',我需要程序識別一個字符串被輸入,並在某些功能中調用。
一些指導將大加讚賞:
#include "assessGrade.h"
int main(void)
{
int finalGrade = 0;
int gradeHolder = 0;
int numberGrade[5] = { 0,0,0,0,0 };
double doubleGrade = 0;
//my beloved bool's
bool floatGrade = false;
bool intGrade = false;
bool stringGrade = false;
//======================================//
// Getting the input from user //
// Also check for stringfloat/int type //
//======================================//
std::string grade;
std::getline(std::cin, grade);
std::stringstream stream(grade);
if (false == isdigit(grade[0]))
{
//it's not a digit
cout << "STRING: " << grade << endl;
stringGrade = true;
}
else if(!(stream >> gradeHolder) || grade.find('.') != std::string::npos)
{
//its a float!
cout << "FLOAT: " << grade << endl;
floatGrade = true;
}
else
{
//it's a int!
cout << "INTEGER: " << grade << endl;
intGrade = true;
}
//======================================//
// Parsing the input //
//======================================//
if (intGrade == true)
{
//do int stuff here
}
else if (floatGrade == true)
{
//do float stuff here
//doubleGrade = grade;
}
else
{
//do string stuff here
}
return 0;
}
更簡潔地描述你的問題。你的問題具體是什麼? – Downvoter
@cad我把編輯,我希望幫助的,但是因爲我現在打字,我的程序無法確定如果我把一個字符串,而不是一個浮動。 – Robolisk
你的第一次測試沒有意義。如果輸入中的第一個字符是數字,爲什麼將它歸類爲字符串? – Mat