有沒有大佬知道如何寫一段程式判斷輸入的資料是否為整數?我知道用cin.fail和cin.ignore能實作判斷輸入的第一個數,但如果輸入的是3a這種,它就會判斷兩次,列印出兩次結果,有什么能一次性判別的方法嗎?
uj5u.com熱心網友回復:
沒有3a這種命名方法吧uj5u.com熱心網友回復:
不是命名,是輸入的資料,它只能判斷第一個數,這種組合型別的就判斷不出來
uj5u.com熱心網友回復:
如果你非要使用庫函式的話,,#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
就是你想要的東西,
nptr會指向第一個非數字,
你先用cin把字串存到string里,然后呼叫這個函式判斷即可,例子如下
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
string str;
long val;
char *endptr;
cin >> val;
const char *str_ptr = str.c_str();
val = strtol(str_ptr, &endptr, 10);
if(endptr != NULL){
cout << "not int " << endl;
}
else{
cout << "yes int " << endl;
}
return 0;
}
uj5u.com熱心網友回復:
首先統一使用字串讀取資料,再判斷字串是否是數字,判斷整數無非是判斷每個字符都是數字,可以用isdigit函式,另外還需注意首位可能是負號,另一種方法是時候C++的istringstream,將這串字符用來輸入一個int變數,判斷是否輸入成功且緩沖區為空uj5u.com熱心網友回復:
string integer;
while (cin >> integer) {
bool flag = true;
for (auto c:integer) {
if (!isdigit(c))
flag = false;
}
if (flag)
cout << "Yes integer!" << endl;
else
cout << "No integer!" << endl;
}
來個不一樣的
uj5u.com熱心網友回復:
可以解釋一下for陳述句的回圈條件那是什么嗎?
uj5u.com熱心網友回復:
編譯失敗了
uj5u.com熱心網友回復:
用的什么編譯器,報什么錯?uj5u.com熱心網友回復:
dev-c [error] Id returned 1 exit status
uj5u.com熱心網友回復:
你百度一下,怎么設定讓其支持c99,我就不發截圖了uj5u.com熱心網友回復:
c++11for回圈的新用法,具體的功能你可以自行百度一下就出來了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/101662.html
標籤:C++ 語言
上一篇:約瑟夫問題
