C 標準庫里自帶的數值型別和字串互相轉換函式

2022-04-02 20:04:05 字數 3077 閱讀 6838

需要包含標頭檔案

#include

數值型別轉成string型別:

string to_string(int val);

string to_string(unsigned val);

string to_string(long val);

string to_string(unsigned long val);

string to_string(long long val);

string to_string(unsigned long long val);

string to_string(float val);

string to_string(double val);

string to_string(long double val);

string型別轉成數值型別:

intstoi(const string& str, size_t *pos=0, int base=10);

long

stol(const string& str, size_t *pos=0, int base=10);

unsigned long

stoul(const string& str, size_t *pos=0, int base=10);

long long

stoll(const string& str, size_t *pos=0, int base=10);

unsigned long long

stoull(const string& str, size_t *pos=0, int base=10);

float

stof(const string& str, size_t *pos=0);

double

stod(const string& str, size_t *pos=0);

long double

stold(const string& str, size_t *pos=0);

這些函式忽略str開頭的空白,pos引數儲存已處理的字元個數,如果是nullptr則忽略,base引數為數的底,進製數,預設為10。

比如

const std::string str = "

123$ is enough";

size_t pos = 0

;int num = std::stoi(str, &pos, 10

);std::cout

<< str.c_str() + pos << std::endl;

將輸出 $ is enough ,num值為123,pos值為4。

c++17新增了更高效的數值和字串轉換函式,在標頭檔案中,這些函式內部沒有記憶體申請開銷,和區域無關(locale-independent)。

整形型別轉成字串:

to_chars_result 

to_chars(char* first, char* last, integert value, int base = 10);

此函式為模版函式,integert為整形型別或char型別,first, last為呼叫者提供的用於儲存轉換結果的連續記憶體區間。

函式返回型別為

struct to_chars_result ;

例子:

std::string strnum(16, '');

auto [ptr, ec] = std::to_chars(strnum.data(), strnum.data() + strnum.size(), 123

);if (ec ==std::errc())

else

auto [ptr, ec]為c++17中的結構化繫結用法,轉換後strnum值為"123",ptr值為strnum.data() + 3。

浮點數轉成字串:

to_chars_result

to_chars(char* first, char* last, floatt value);

to_chars_result

to_chars(char* first, char* last, floatt value, chars_format format);

to_chars_result

to_chars(char* first, char* last, floatt value, chars_format format, int precision);

floatt可以是 float, double, 或 long double 型別,format 型別為 chars_format ,可以是下列值的組合,預設值為 chars_format::general。

enum

class

chars_format ;

字串轉為數值型別:

from_chars_result

from_chars(const char* first, const char* last, integert& value, int base = 10);

from_chars_result

from_chars(const char* first, const char* last, floatt& value, chars_format format = chars_format::general);

first, last為被轉換的字串的開始和結束位址,integert為整形型別,floatt為浮點數型別。

from_chars_result 型別為:

struct

from_chars_result ;

轉換成功的話ec值等於std::errc(),ptr 值為第乙個不能被轉換字元的位址,如果字串都能被轉換的話,ptr 值為 last.

如果是字串表示的實際值超出 integert 或 floatt 的區間,ec值為 std::errc::result_out_of_range。

如果轉換失敗,ec值為 std::errc::invalid_argument, ptr 值為 first。

另外注意:from_chars 不會跳過字串開頭的空白。

C 數值型別的轉換

介紹c 數值型別之間轉換,包括介紹testbasic 函式等方面。c 數值型別之間轉換 這裡所說的數值型別包括 byte,short,int,long,fload,double 等,根據這個排列順序,各種型別的值依次可以向後自動進行轉換。舉個例來說,把乙個 short 型的資料賦值給乙個 int 型...

python數值型別和字串詳解

一 python數值型別 二 字串 字串建立 在python中表示字串有3種方式,分別為單引號 雙引號 三引號。其中單引號和雙引號的作用一樣 in 8 s hello in 9 type s out 9 str in 10 s world in 11 type s out 11 str in 14 ...

標準c字元和字串

atof 將字串轉換成浮點數 atoi 將字串轉換成整數 atol 將字串轉換成長整型數 isalnum 當字母或數字字元時,返回真值 isalpha 當字母字元時,返回真值 iscntrl 當控制字元時,返回真值 isdigit 當數字字元時,返回真值 isgraph 當非空格可列印字元時,返回真...