字串:怎樣轉換字串為數字型別? (轉)
字串:怎樣轉換字串為數字型別?
當將字串轉換為數值型別時, 有一項東西你不允許忽略:
轉換可能因為你正在轉換的字串可能不包含有效的數字表示法而失敗
例如, 如果你想將"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字串
- 字串: 怎樣在ANSI 和 UNICODE間做轉換 (轉)字串Unicode
- JavaScript字串轉換數字JavaScript字串
- 字串轉換整數(atoi)字串
- 將字串轉換成Bitmap型別 或者 將Bitmap轉換成字串字串型別
- mysql 字串和數字比,字串會隱式轉換為數字0MySql字串
- 字串轉換字串
- java json字串轉換為物件,轉換為listJavaJSON字串物件
- JavaScript 字串轉換為陣列JavaScript字串陣列
- 將整數轉換成字串字串
- 字串、數值 等型別的相互 安全轉換字串型別
- 將字串轉為數字字串
- Java下數字型別的轉換 (轉)Java型別
- Octave 數字轉字元,連線兩個字串,以及如何將字串轉換為變數名稱字元字串變數
- PHP 字串強制轉換為數值問題PHP字串
- java中數字型別轉換Java型別
- Awk 字串連線操作(字串轉數字,數字轉字串)字串
- json字串 轉換為陣列JSON字串陣列
- JavaScript將陣列轉換為字串JavaScript陣列字串
- javascript數字和字串相互轉換JavaScript字串
- 字串和數字的相互轉換字串
- c語言字串,數字轉換C語言字串
- 劍指offer(Java版)--將字串轉換為整數Java字串
- 將字串陣列轉換為浮點數陣列字串陣列
- js利用Number()函式將字串轉換為數字JS函式字串
- js將字串轉換為數字程式碼例項JS字串
- javascript將字串轉換為整數程式碼例項JavaScript字串
- C#字串轉換為數字的4種方法C#字串
- [LeetCode] ZigZag Converesion 之字型轉換字串LeetCode字串
- 大小寫互換-"數字字串"轉換成數字字串
- 字串-大小寫轉換字串
- react HTML字串轉換ReactHTML字串
- mysql 日期轉換字串MySql字串
- php日期時間如何轉換為字串PHP字串
- python字串轉換為日期時間Python字串