vuejs做視頻網(wǎng)站免費加精準客源
isdigit、isalnum、isalpha、islower、issupper都是C/C ++語言中判斷字符的一些函數(shù),靈活利用在刷題中可以節(jié)省我們的一部分時間。下面c統(tǒng)一為char類型字符
1.isdigit
若參數(shù)c為十進制數(shù)字0~9,則返回非0值,否則返回0。
其中isxdigital判斷是否是十六進制數(shù)
2.isalnum
用來判斷一個字符是否為數(shù)字或者字母,如果是,則返回非零,否則返回零。
3. isalpha
?用來判斷一個字符是否為字母,如果是,則返回非零,否則返回零。
4. islower
用來判斷一個字符是否為小寫字母,如果是,則返回非零,否則返回零。
tolower轉(zhuǎn)換成小寫
5. islsupper
用來判斷一個字符是否為大寫字母,如果是,則返回非零,否則返回零。
toupper轉(zhuǎn)換成大寫
二、stoi, stoll用法
一、stoi將字符串轉(zhuǎn)換為int類型整數(shù)
頭文件string
int stoi (const string& str, size_t* idx = 0, int base = 10);
解析str將其內(nèi)容解釋為指定基數(shù)的整數(shù),并以int值的形式返回。
如果idx不是空指針,則該函數(shù)還將idx的值設(shè)置為數(shù)字后str中第一個字符的位置。
base:進制,10:十進制,8:八進制,16:十六進制,0:則自動檢測數(shù)值進制,str 是 0 開頭為八進制,str 是 0x 或 0X 開頭是十六進制,默認為十進制
stoi() 函數(shù)指定轉(zhuǎn)換字符串為十進制用法
#include <iostream>
#include <string>
using namespace std;int main(int argc, char *argv[])
{int a;size_t pos = 0;string str;str = "-1235";a = stoi(str);cout << "a = " << a << endl; //a = -1235str = "1235";a = stoi(str);cout << "a = " << a << endl; //a = 1235str = " -12 35"; // 前兩個空格a = stoi(str, &pos); // 會舍棄空白符cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = " -12ab35";// 前兩個空格a = stoi(str, &pos);// 會舍棄空白符cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = "0123";a = stoi(str);cout << "a = " << a << endl; //a = 123str = "0x123";a = stoi(str);cout << "a = " << a << endl; //a = 0return 0;
}
?stoi() 函數(shù)將指定轉(zhuǎn)換字符串以16進制轉(zhuǎn)10進制用法
#include <iostream>
#include <string>
using namespace std;int main(int argc, char *argv[])
{int a;size_t pos = 0;string str;str = "0x123";a = stoi(str, NULL, 16); //base = 16,指定十六進制cout << "a = " << a << endl; //a = 291str = "0x123";a = stoi(str, NULL, 0); //base = 0,自動檢測數(shù)值進制cout << "a = " << a << endl; //a = 291str = "-12";a = stoi(str, &pos, 16); //-(2 + 1*16)cout << "a = " << a << endl; //a = -18cout << "pos = " << pos << endl; //pos = 3str = "12";a = stoi(str, &pos, 16); //2 + 1*16cout << "a = " << a << endl; //a = 18cout << "pos = " << pos << endl; //pos = 2str = " -12 35"; a = stoi(str, &pos, 16); //會舍棄空白符cout << "a = " << a << endl; //a = -18cout << "pos = " << pos << endl; //pos = 5str = " -ab";a = stoi(str, &pos, 16); //-(11 + 10*16)cout << "a = " << a << endl; //a = -171cout << "pos = " << pos << endl; //pos = 5str = "0123";a = stoi(str, NULL, 16); //(3 + 2*16 + 1*16*16)cout << "a = " << a << endl; //a = 291return 0;
}
異常
如果無法執(zhí)行轉(zhuǎn)換,則拋出invalid_argument異常。
如果讀取的值超出int的可表示值范圍,則拋出out_of_range異常。
無效的idx會導(dǎo)致未定義的行為。
2.stoll() 函數(shù)
long long stoll(const std::string& str, std::size_t* pos = 0, int base = 10);
功能:將字符串str轉(zhuǎn)成 long long 整數(shù)
參數(shù):
str:字符串
pos:存儲將字符串 str 轉(zhuǎn)成 long long 整數(shù),處理了 str 中字符的個數(shù)的地址,默認為 NULL
base:進制,10:十進制,8:八進制,16:十六進制,0:則自動檢測數(shù)值進制,str 是 0 開頭為八進制,str 是 0x 或 0X 開頭是十六進制,默認為十進制
stoll() 函數(shù)指定轉(zhuǎn)換字符串為十進制用法
#include <iostream>
#include <string>
using namespace std;int main(int argc, char *argv[])
{long long a;size_t pos = 0;string str;str = "-1235";a = stoll(str);cout << "a = " << a << endl; //a = -1235str = "1235";a = stoll(str);cout << "a = " << a << endl; //a = 1235str = " -12 35"; a = stoll(str, &pos); //會舍棄空白符cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = " -12ab35";a = stoll(str, &pos);cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = "0123";a = stoll(str);cout << "a = " << a << endl; //a = 123str = "0x123";a = stoll(str);cout << "a = " << a << endl; //a = 0return 0;
}
對于stoi可能超出范圍的字符串,不能用stoi(str) < INT_MAX去限制,而應(yīng)該用范圍更大的stoll先判斷
?