詳解C++中stoi/stol/stoll函數(shù)的用法
stoi()函數(shù)
#include <string>
int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);
int stoi(const std::wstring& str, std::size_t* pos = 0, int base = 10);
功能:將字符串str轉(zhuǎn)成 有符號 int 整數(shù)
參數(shù):
- str:字符串
- pos:存儲將字符串str轉(zhuǎn)成有符號整數(shù),處理了str中字符的個數(shù)的地址,默認(rèn)為NULL
- base:進(jìn)制,10:十進(jìn)制,8:八進(jìn)制,16:十六進(jìn)制,0:則自動檢測數(shù)值進(jìn)制,str是 0 開頭為八進(jìn)制,str是 0x 或 0X 開頭是十六進(jìn)制,默認(rèn)為十進(jìn)制
stoi()函數(shù)指定轉(zhuǎn)換字符串為十進(jì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 = -1235
str = "1235";
a = stoi(str);
cout << "a = " << a << endl; //a = 1235
str = " -12 35";
a = stoi(str, &pos); //會舍棄空白符
cout << "a = " << a << endl; //a = -12
cout << "pos = " << pos << endl; //pos = 5
str = " -12ab35";
a = stoi(str, &pos);
cout << "a = " << a << endl; //a = -12
cout << "pos = " << pos << endl; //pos = 5
str = "0123";
a = stoi(str);
cout << "a = " << a << endl; //a = 123
str = "0x123";
a = stoi(str);
cout << "a = " << a << endl; //a = 0
return 0;
}stoi()函數(shù)指定轉(zhuǎn)換字符串為十六進(jìn)制用法
#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,指定十六進(jìn)制
cout << "a = " << a << endl; //a = 291
str = "0x123";
a = stoi(str, NULL, 0); //base = 0,自動檢測數(shù)值進(jìn)制
cout << "a = " << a << endl; //a = 291
str = "-12";
a = stoi(str, &pos, 16); //-(2 + 1*16)
cout << "a = " << a << endl; //a = -18
cout << "pos = " << pos << endl; //pos = 3
str = "12";
a = stoi(str, &pos, 16); //2 + 1*16
cout << "a = " << a << endl; //a = 18
cout << "pos = " << pos << endl; //pos = 2
str = " -12 35";
a = stoi(str, &pos, 16); //會舍棄空白符
cout << "a = " << a << endl; //a = -18
cout << "pos = " << pos << endl; //pos = 5
str = " -ab";
a = stoi(str, &pos, 16); //-(11 + 10*16)
cout << "a = " << a << endl; //a = -171
cout << "pos = " << pos << endl; //pos = 5
str = "0123";
a = stoi(str, NULL, 16); //(3 + 2*16 + 1*16*16)
cout << "a = " << a << endl; //a = 291
return 0;
}stoi()函數(shù)指定轉(zhuǎn)換字符串為八進(jìn)制用法
#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, 8); //base = 8,指定八進(jìn)制
cout << "a = " << a << endl; //a = 0
str = "0123"; //(3 + 2*8 + 1*8*8)
a = stoi(str, NULL, 0); //base = 0,自動檢測數(shù)值進(jìn)制
cout << "a = " << a << endl; //a = 83
str = "-12";
a = stoi(str, &pos, 8); //-(2 + 1*8)
cout << "a = " << a << endl; //a = -10
cout << "pos = " << pos << endl; //pos = 3
str = "12";
a = stoi(str, &pos, 8); //2 + 1*8
cout << "a = " << a << endl; //a = 10
cout << "pos = " << pos << endl; //pos = 2
str = " -12 35";
a = stoi(str, &pos, 8); //會舍棄空白符
cout << "a = " << a << endl; //a = -10
cout << "pos = " << pos << endl; //pos = 5
// str = " -a78";
// a = stoi(str, &pos, 8); //數(shù)字前有字母,調(diào)用會崩掉
// cout << "a = " << a << endl;
// cout << "pos = " << pos << endl;
return 0;
}stol()函數(shù)
#include <string>
long stol(const std::string& str, std::size_t* pos = 0, int base = 10);
long stol(const std::wstring& str, std::size_t* pos = 0, int base = 10);
功能:將字符串str轉(zhuǎn)成 有符號 long 整數(shù)
參數(shù):
- str:字符串
- pos:存儲將字符串str轉(zhuǎn)成有符號整數(shù),處理了str中字符的個數(shù)的地址,默認(rèn)為NULL
- base:進(jìn)制,10:十進(jìn)制,8:八進(jìn)制,16:十六進(jìn)制,0:則自動檢測數(shù)值進(jìn)制,str是 0 開頭為八進(jìn)制,str是 0x 或 0X 開頭是十六進(jìn)制,默認(rèn)為十進(jìn)制
stol()函數(shù)指定轉(zhuǎn)換字符串為十進(jìn)制用法
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
long a;
size_t pos = 0;
string str;
str = "-1235";
a = stol(str);
cout << "a = " << a << endl; //a = -1235
str = "1235";
a = stol(str);
cout << "a = " << a << endl; //a = 1235
str = " -12 35";
a = stol(str, &pos); //會舍棄空白符
cout << "a = " << a << endl; //a = -12
cout << "pos = " << pos << endl; //pos = 5
str = " -12ab35";
a = stol(str, &pos);
cout << "a = " << a << endl; //a = -12
cout << "pos = " << pos << endl; //pos = 5
str = "0123";
a = stol(str);
cout << "a = " << a << endl; //a = 123
str = "0x123";
a = stol(str);
cout << "a = " << a << endl; //a = 0
return 0;
}stol()函數(shù)指定轉(zhuǎn)換字符串為十六進(jìn)制用法
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
long a;
size_t pos = 0;
string str;
str = "0x123";
a = stol(str, NULL, 16); //base = 16,指定十六進(jìn)制
cout << "a = " << a << endl; //a = 291
str = "0x123";
a = stol(str, NULL, 0); //base = 0,自動檢測數(shù)值進(jìn)制
cout << "a = " << a << endl; //a = 291
str = "-12";
a = stol(str, &pos, 16); //-(2 + 1*16)
cout << "a = " << a << endl; //a = -18
cout << "pos = " << pos << endl; //pos = 3
str = "12";
a = stol(str, &pos, 16); //2 + 1*16
cout << "a = " << a << endl; //a = 18
cout << "pos = " << pos << endl; //pos = 2
str = " -12 35";
a = stol(str, &pos, 16); //會舍棄空白符
cout << "a = " << a << endl; //a = -18
cout << "pos = " << pos << endl; //pos = 5
str = " -ab";
a = stol(str, &pos, 16); //-(11 + 10*16)
cout << "a = " << a << endl; //a = -171
cout << "pos = " << pos << endl; //pos = 5
str = "0123";
a = stol(str, NULL, 16); //(3 + 2*16 + 1*16*16)
cout << "a = " << a << endl; //a = 291
return 0;
}stol()函數(shù)指定轉(zhuǎn)換字符串為八進(jìn)制用法
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
long a;
size_t pos = 0;
string str;
str = "0x123";
a = stol(str, NULL, 8); //base = 8,指定八進(jìn)制
cout << "a = " << a << endl; //a = 0
str = "0123"; //(3 + 2*8 + 1*8*8)
a = stol(str, NULL, 0); //base = 0,自動檢測數(shù)值進(jìn)制
cout << "a = " << a << endl; //a = 83
str = "-12";
a = stol(str, &pos, 8); //-(2 + 1*8)
cout << "a = " << a << endl; //a = -10
cout << "pos = " << pos << endl; //pos = 3
str = "12";
a = stol(str, &pos, 8); //2 + 1*8
cout << "a = " << a << endl; //a = 10
cout << "pos = " << pos << endl; //pos = 2
str = " -12 35";
a = stol(str, &pos, 8); //會舍棄空白符
cout << "a = " << a << endl; //a = -10
cout << "pos = " << pos << endl; //pos = 5
// str = " -a78";
// a = stol(str, &pos, 8); //數(shù)字前有字母,調(diào)用會崩掉
// cout << "a = " << a << endl;
// cout << "pos = " << pos << endl;
return 0;
}stoll()函數(shù)
#include <string>
long long stoll(const std::string& str, std::size_t* pos = 0, int base = 10);
long long stoll(const std::wstring& str, std::size_t* pos = 0, int base = 10);
功能:將字符串str轉(zhuǎn)成 有符號 long long 整數(shù)
參數(shù):
- str:字符串
- pos:存儲將字符串str轉(zhuǎn)成有符號整數(shù),處理了str中字符的個數(shù)的地址,默認(rèn)為NULL
- base:進(jìn)制,10:十進(jìn)制,8:八進(jìn)制,16:十六進(jìn)制,0:則自動檢測數(shù)值進(jìn)制,str是 0 開頭為八進(jìn)制,str是 0x 或 0X 開頭是十六進(jìn)制,默認(rèn)為十進(jìn)制
stoll()函數(shù)指定轉(zhuǎn)換字符串為十進(jì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 = -1235
str = "1235";
a = stoll(str);
cout << "a = " << a << endl; //a = 1235
str = " -12 35";
a = stoll(str, &pos); //會舍棄空白符
cout << "a = " << a << endl; //a = -12
cout << "pos = " << pos << endl; //pos = 5
str = " -12ab35";
a = stoll(str, &pos);
cout << "a = " << a << endl; //a = -12
cout << "pos = " << pos << endl; //pos = 5
str = "0123";
a = stoll(str);
cout << "a = " << a << endl; //a = 123
str = "0x123";
a = stoll(str);
cout << "a = " << a << endl; //a = 0
return 0;
}stoll()函數(shù)指定轉(zhuǎn)換字符串為十六進(jìn)制用法
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
long long a;
size_t pos = 0;
string str;
str = "0x123";
a = stoll(str, NULL, 16); //base = 16,指定十六進(jìn)制
cout << "a = " << a << endl; //a = 291
str = "0x123";
a = stoll(str, NULL, 0); //base = 0,自動檢測數(shù)值進(jìn)制
cout << "a = " << a << endl; //a = 291
str = "-12";
a = stoll(str, &pos, 16); //-(2 + 1*16)
cout << "a = " << a << endl; //a = -18
cout << "pos = " << pos << endl; //pos = 3
str = "12";
a = stoll(str, &pos, 16); //2 + 1*16
cout << "a = " << a << endl; //a = 18
cout << "pos = " << pos << endl; //pos = 2
str = " -12 35";
a = stoll(str, &pos, 16); //會舍棄空白符
cout << "a = " << a << endl; //a = -18
cout << "pos = " << pos << endl; //pos = 5
str = " -ab";
a = stoll(str, &pos, 16); //-(11 + 10*16)
cout << "a = " << a << endl; //a = -171
cout << "pos = " << pos << endl; //pos = 5
str = "0123";
a = stoll(str, NULL, 16); //(3 + 2*16 + 1*16*16)
cout << "a = " << a << endl; //a = 291
return 0;
}stoll()函數(shù)指定轉(zhuǎn)換字符串為八進(jìn)制用法
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
long long a;
size_t pos = 0;
string str;
str = "0x123";
a = stoll(str, NULL, 8); //base = 8,指定八進(jìn)制
cout << "a = " << a << endl; //a = 0
str = "0123"; //(3 + 2*8 + 1*8*8)
a = stoll(str, NULL, 0); //base = 0,自動檢測數(shù)值進(jìn)制
cout << "a = " << a << endl; //a = 83
str = "-12";
a = stoll(str, &pos, 8); //-(2 + 1*8)
cout << "a = " << a << endl; //a = -10
cout << "pos = " << pos << endl; //pos = 3
str = "12";
a = stoll(str, &pos, 8); //2 + 1*8
cout << "a = " << a << endl; //a = 10
cout << "pos = " << pos << endl; //pos = 2
str = " -12 35";
a = stoll(str, &pos, 8); //會舍棄空白符
cout << "a = " << a << endl; //a = -10
cout << "pos = " << pos << endl; //pos = 5
// str = " -a78";
// a = stoll(str, &pos, 8); //數(shù)字前有字母,調(diào)用會崩掉
// cout << "a = " << a << endl;
// cout << "pos = " << pos << endl;
return 0;
}注意:stoi、stol、stoll 函數(shù)是C++11標(biāo)準(zhǔn)加入的,用g++編譯器編譯需要加參數(shù):-std=c++11
到此這篇關(guān)于詳解C++中stoi/stol/stoll函數(shù)的用法的文章就介紹到這了,更多相關(guān)C++ stoi stol stoll內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c++ 如何在libuv中實現(xiàn)tcp服務(wù)器
這篇文章主要介紹了c++ 如何在libuv中實現(xiàn)tcp服務(wù)器,幫助大家更好的理解和使用libuv,感興趣的朋友可以了解下2021-02-02
棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進(jìn)行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進(jìn)棧、入?;驂簵#前研略胤诺綏m斣氐纳厦妫怪蔀樾碌臈m斣?/div> 2022-04-04
C++中默認(rèn)無參構(gòu)造函數(shù)的工作機(jī)制淺析
構(gòu)造函數(shù)主要作用在于創(chuàng)建對象時為對象的成員屬性賦值,構(gòu)造函數(shù)由編譯器自動調(diào)用,無須手動調(diào)用;析構(gòu)函數(shù)主要作用在于對象銷毀前系統(tǒng)自動調(diào)用,執(zhí)行一些清理工作2023-02-02
QT出現(xiàn)沒有MySQL驅(qū)動手動編譯詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于QT出現(xiàn)沒有MySQL驅(qū)動手動編譯詳細(xì)步驟的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用QT具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-04-04最新評論

