C++數字與字符串的轉換

數字與字符串的轉換

C++的stringstream類(來源:<sstream>)

1.字符串到數字

string str = "854";
stringstream sstr(str);
int x;
sstr >> x;//即從sstr中提取數據

2.數字到字符串

stringstream sstr;
string str;
double x = 154.83;
sstr << x;
str = sstr.str();//或者sstr >> str;
  • 缺點:處理大量數據轉換速度較慢。stringstream不會主動釋放內存,如果要在程序中用同一個流,需要適時地清除一下緩存(用stream.str("")和stream.clear()).
  • 注:>>是流提取符,<<是流插入符

C標準庫sprintf、sscanf函數(來源:<stdio.h> or <cstdio>)

1.用sprintf函數將數字轉換成字符串(char[])

int val = 1234;
char str[10];
sprintf(str,"%d",val);

2.用sscanf函數將字符串(char[])轉換成數字

char str[] = "15.455";
int i;
float fp;
sscanf( str, "%d", &i ); // 將字符串轉換成整數 i = 15
sscanf( str, "%f", &fp ); // 將字符串轉換成浮點數 fp = 15.455000

C標準庫atoi等與itoa等函數(來源:<stdlib.h> or <cstdlib>)

1.用atoi函數將字符串(char)轉換成數字*

//int atoi(char*);
string a = "1234";
const char *b = "1234";
char c[5]="1234";

int d = atoi(a.c_str());
int e = atoi(b);
int f = atoi(c);

/*
原型:long strtol(char* str, char** endptr, int base);
str:欲轉換的字符串的起始地址;endptr:非法字符後的起始地址;base:將字符串按照base進制轉換。
功能:把一個字符串以base進制轉換成數字,將不能轉換的部分存入endptr指向的地址。
*/
char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";
char * pEnd;
long int li1, li2, li3, li4;
li1 = strtol (szNumbers,&pEnd,10);
li2 = strtol (pEnd,&pEnd,16);
li3 = strtol (pEnd,&pEnd,2);
li4 = strtol (pEnd,NULL,0);

//其他的類似函數
//atoi
//atol
//atoll
//atof
//strtod
//strtof
//strtol
//strtold
//strtoll
//strtoul
//strtoull

2.用itoa函數將數字轉換成字符串(char)*

  • 注:itoa函數非標準函數
  • 一個更標準的用法是採用sprintf(如上)
/*
原型:char* itoa(int value, char *str,int base);
value:欲轉換的數字;str:目標字符串的地址;base:將數字轉換成base進制的字符串。
功能:把一個數字轉換成base進制的字符串。
*/
int num = 125;
char str[10];
itoa(num, str, 16);//str = 7d

//其他的類似函數
//itoa
//ltoa
//ultoa
//gcvt
//ecvt

C++的to_string與stoi等函數(來源:<string>)

1.用to_string函數將數字轉換爲字符串(string)

string to_string(T value);

2.用stoi等函數將字符串(string)轉換爲數字

/*
原型:int stoi(string str, size_t* idx = 0, int base = 10);
str:欲轉換的數據;idx:目標字符串的起始轉換地址;base:待轉換數據的進制。
功能:把一個字符串按照base進制轉換成數字,至str的第一個非法字符結束
*/
string str = "115.5xy";
int val = std::stoi(str,0,2);// val = 3
long val1 = std::stol(str);// val1 = 115
float val2 = std::stof(str);// val2 = 115.5
//其他類似函數
//stoi
//stol
//stoul
//stoll
//stof
//stod
//stold

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章