字串:怎樣轉換字串為數字型別? (轉)
字串:怎樣轉換字串為數字型別?
當將字串轉換為數值型別時, 有一項東西你不允許忽略:
轉換可能因為你正在轉換的字串可能不包含有效的數字表示法而失敗
例如, 如果你想將"Hello"轉換為數字, 轉換將失敗
老的C方法(不贊成)
許多人用atoi(), atof() 和這個“家族”中的其它. 它們方便應用,但是有一個重要的缺點:
在轉換失敗和轉換字串"0"時都返回0, 這樣使得一致性錯誤檢查變得幾乎不可能。 為了完整性我們給出了小段程式碼:
程式碼:
--------------------------------------------------------------------------------
const char* str_int = "777";
const char* str_float = "333.3";
int i = atoi(str_int);
float f = atof(str_float);
--------------------------------------------------------------------------------
一個更好的辦法:
更有一點複雜, 更遺一致的辦法是利用sscanf()
程式碼:
--------------------------------------------------------------------------------
const char* str_int = "777";
const char* str_float = "333.3";
int i;
float f;
if(EOF == sscanf(str_int, "%d", &i)){
//錯誤
}
if(EOF == sscanf(str_float, "%f", &f)){
//錯誤
}
--------------------------------------------------------------------------------
Since sscanf() takes a const char* parameter, you can directly use a CString with it:
因為sscanf()用const char* 作為引數, 所以你可以直接用CString作引數:
程式碼:
--------------------------------------------------------------------------------
CString str_int("777");
if(EOF == sscanf(str_int, "%d", &i)){
//error
}
--------------------------------------------------------------------------------
小心格式描述符(如本例中的"%d")。 sscanf()沒有辦法檢查格式描述符與傳遞變數的型別匹配與否。如果不匹配你將得到不可預期的結果。 同樣注意sscanf()可以一次從字串中提取一個或多個數值。 詳細資訊請查閱MSDN。
C++ 方法
如下的例子展示了利用標準C++類的來完成這個任務的模板函式
程式碼:
--------------------------------------------------------------------------------
#include
#include
#include
template
bool from_string(T &t,
const std::string &s,
std::ios_base & (*f)(std::ios_base&))
{
std::istringstream iss(s);
return !(iss>>f>>t).fail();
}
int main()
{
int i;
float f;
// from_string()的第三個引數應為如下中的一個
// one of std::hex, std::dec 或 std::oct
if(from_string
std::cout< }
else{
std::cout< }
if(from_string
std::string("123.456"),
std::dec))
{
std::cout<
else{
std::cout< }
return 0;
}
/* 輸出:
255
123.456
*/
--------------------------------------------------------------------------------
這個方法不僅僅非常別緻, 而且也是型別的, 因為在編譯時會根據運算元的型別將挑選適當的std::istringstream ::operator >>()。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993440/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript 字串轉換數值型別JavaScript字串型別
- Thymeleaf將字串轉換為數字字串
- JavaScript字串轉換數字JavaScript字串
- 字串轉換整數(atoi)字串
- 將數值轉換為字串的函式字串函式
- 2020-11-13整數轉換為字串 字元反轉字串字元
- mysql 字串和數字比,字串會隱式轉換為數字0MySql字串
- json字串 轉換為陣列JSON字串陣列
- JavaScript 字串轉換為陣列JavaScript字串陣列
- Octave 數字轉字元,連線兩個字串,以及如何將字串轉換為變數名稱字元字串變數
- PHP 字串強制轉換為數值問題PHP字串
- JavaScript將陣列轉換為字串JavaScript陣列字串
- JSON字串轉換為物件直接量JSON字串物件
- python字串轉換為日期時間Python字串
- python實現字串轉換整數Python字串
- 字串json陣列怎麼轉換成jsonobject型別字串JSON陣列Object型別
- 字串-大小寫轉換字串
- list與字串轉換字串
- 劍指offer(Java版)--將字串轉換為整數Java字串
- 將字串陣列轉換為浮點數陣列字串陣列
- Day7(字串)|344.反轉字串 541.反轉字串II 54.替換數字字串
- Python中怎麼轉換字串大小寫Python字串
- 【Go】IP地址轉換:數字與字串之間高效轉換Go字串
- JavaScript將物件轉換為JSON格式字串JavaScript物件JSON字串
- eval()將JSON格式字串轉換為物件JSON字串物件
- php日期時間如何轉換為字串PHP字串
- String to Integer (atoi) 字串轉換整數 (atoi)字串
- {{rateTime}}大括號裡面的數字轉換為字串(日期)字串
- 如何在MySQL中使用CONVERT將字串轉換為數字MySql字串
- 浮點數轉換為String字串(可設定精度)方法字串
- CAPL指令碼中常用到的資料型別轉換——數字型別(int/double)和字串型別(char array)指令碼資料型別字串
- 數字型別的不正確轉換漏洞型別
- JavaScript字串大小寫轉換JavaScript字串
- 字串 列表 字典 互相轉換字串
- 字串大小寫轉換和字串的比較字串
- Golang語言包-字串處理strings和字串型別轉換strconvGolang字串型別
- T-SQL——將字串轉換為多列SQL字串
- Java如何將字串轉換為字元陣列?Java字串字元陣列
- 如何在Java中將字串轉換為日期Java字串