2 char*轉數字
int sprintf( char *buffer, const char *format [, argument] ... )
;
由於sprintf 跟printf 在用法上幾乎一樣,只是列印的目的地不同而已,前者列印到字串中,
後者則直接在命令列上輸出。
sprintf 使用格式化字串來指定串的格式,在格式串內部使用一些以「%」開頭的。
格式說明符(format specifications)來佔據乙個位置,在後邊的變參列表中提供相應的變數,最終
函式就會用相應位置的變數來替代那個說明符,產生乙個呼叫者想要的字串。
其比itoa()系列函式執行速度慢。
//把整數123 列印成乙個字串儲存在s 中。
sprintf
(s,"%d"
,123);
//產生"123"
//小寫16 進製,寬度佔8 個位置,右對齊,左邊補0 的等寬格式
sprintf
(s,"%08x"
,4567);
//產生:"000011d7"
char *itoa (int value, char *str, int base )
;
itoa並不是乙個標準的c函式,它是windows特有的,如果要寫跨平台的程式,請用sprintf。
itoa()函式有3個引數:
第乙個引數是要轉換的數字,
第二個引數是要寫入轉換結果的目標字串,
第三個引數是轉移數字時所用的進製基數。
#include
//cstdlib和stdlib.h都可以
#include
//cstdio和stdio.h都可以
//如果用的是cstdio和cstdlib,要加上 using namespace std;
intmain
(void
)
輸出:
integer =
12,string = c
標頭檔案 c stdlib.h
c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)
與itoa類似,只是輸入數字的取值範圍不同
標頭檔案c stdlib.h
c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)
atoi是標準庫函式,itoa不是
int atoi(const char * nptr)
;
函式說明atoi()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(』\0』)才結束轉換,並將結果返回。
附加說明
atoi只支援轉換表示10進製數的字串
atoi()與使用strtol(nptr,(char**)null,10);結果相同。
標頭檔案 c stdlib.h
c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)
long atol(const char *nptr)
;
函式說明
atol()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(』\0』)才結束轉換,並將結果返回。
附加說明
atol只支援轉換表示10進製數的字串
atol()與使用strtol(nptr,(char**)null,10);結果相同。
標頭檔案 c stdlib.h
c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)
double atof(const char *nptr)
;
函式說明
atof()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(』\0』)才結束轉 換,並將結果返回。引數nptr字串可包含正負號、小數點或e(e)來表示指數部分,如123.456或123e-2。返回值 返回轉換後的浮點型數。
附加說明
atof只支援轉換表示10進製數的字串
atof()與使用strtod(nptr,(char**)null)結果相同。
標頭檔案 c stdlib.h
c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)
long int strtol(const char *nptr,char **endptr,int base)
;
函式說明
strtol()會將引數nptr字串根據引數base來轉換成長整型數。
引數base範圍從2至36,或0。
引數base代表採用的進製方式,如 base值為10則採用10進製,若base值為16則採用16進製制等。
當base值為0時則是採用10進製做轉換,但遇到如』0x』前置字元則會使用 16進製做轉換。
一開始strtol()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,再遇到非數字或字串結束 時(』\0』)結束轉換,並將結果返回。
若引數endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr返回。
返回值返回轉換後的長整型數,否則返回erange並將錯誤**存入errno中。
附加說明erange指定的轉換字串超出合法範圍。
#include
//cstdlib和stdlib.h都可以
#include
//cstdio和stdio.h都可以
//如果用的是cstdio和cstdlib,要加上 using namespace std;
intmain
(void
)
輸出:
lvalue =
18
標頭檔案 c stdlib.h
c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)
unsigned long int strtoul(const char *nptr,char**endptr,int base)
;
函式說明
strtoul()會將引數nptr字串根據引數base來轉換成無符號的長整型數。引數base範圍從2至36,或0。
引數base代表採用的進製方式,如base值為10則採用10進製,若base值為16則採用16進製制數等。
當base值為0時則是採用10進製做轉換,但遇到如』0x』前置字元則會使用16進製做轉換。
一開始strtoul()會掃瞄引數nptr字串,跳過前面的空格字串,直到遇上數字或正負符號才開始做轉換,再遇到非數字或 字串結束時(』\0』)結束轉換,並將結果返回。若引數endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr返 回。
返回值返回轉換後的長整型數,否則返回erange並將錯誤**存入errno中。
附加說明erange指定的轉換字串超出合法範圍。
#include
//cstdlib和stdlib.h都可以
#include
//cstdio和stdio.h都可以
//如果用的是cstdio和cstdlib,要加上 using namespace std;
intmain
(void
)
輸出:
lvalue =
18
標頭檔案 c stdlib.h
c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)
double strtod(const char *nptr,char **endptr)
;
函式說明
strtod()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,到出現非數字或字串結束時(』\0』)才結束轉 換,並將結果返回。
若endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr傳回。
引數nptr字串可包含正負號、 小數點或e(e)來表示指數部分。如123.456或123e-2。
返回值
返回轉換後的浮點型數。
strtod只支援轉換表示10進製數的字串
C 中string與char 轉換
string 轉換成 char string ss abcdefg char cc s.tochararray char 轉換成string string s new string cc 此外,byte 與 string 之間的裝換 byte bb encoding.utf8.getbytes ss...
C 中char 與string之間的轉換
string 轉換成 char string ss abcdefg char cc ss.tochararray char 轉換成string string s new string cc 此外,byte 與 string 之間的裝換 byte bb encoding.utf8.getbytes s...
C 中char 與string之間的轉換
string 轉換成 char string ss abcdefg char cc ss.tochararray char 轉換成string string s new string cc 此外,byte 與 string 之間的裝換 byte bb encoding.utf8.getbytes s...