C++是一門非常強大的編程語言,可以支持各種各樣的數據類型和演算法。在實際開發中,我們可能會需要將一個字元串轉換為數字,或者將數字轉換為字元串。C++標準庫提供了一些函數可以實現這種轉換,而使用C++ string作為中間數據類型,可以更加方便地進行轉換操作,本文將介紹如何使用C++ string實現字元串和數字的互轉。
一、將字元串轉換為數字
在C++中,我們可以使用標準庫中的函數stoi
將一個字元串轉換為整數。此函數的原型如下:
int stoi(const string& str, size_t* pos = 0, int base = 10);
其中,str
是需要轉換的字元串;pos
是一個指針,用於指示轉換過程中哪些字元無法被轉換為數字;base
表示數字的進位,可以是2、8、10或16。
例如,下面的代碼可以將字元串"123"
轉換為整數123
:
string str = "123";
int num = stoi(str);
cout << num << endl; // 輸出123
如果字元串無法被轉換成數字,stoi
函數會拋出一個異常invalid_argument
,我們可以使用try-catch機制來捕獲這個異常,如下所示:
string str = "hello";
try{
int num = stoi(str);
cout << num << endl;
}catch(invalid_argument& e){
cout << "轉換失敗" << endl;
}
二、將數字轉換為字元串
如果我們需要將一個數字轉換為字元串,可以使用標準庫中的to_string
函數。此函數的原型如下:
string to_string(int val);
其中,val
是需要轉換的數字。
例如,下面的代碼可以將整數123
轉換為字元串"123"
:
int num = 123;
string str = to_string(num);
cout << str << endl; // 輸出123
三、其他實用技巧
除了上述介紹的基本用法,下面列舉一些使用C++ string進行數字和字元串轉換時的實用技巧:
1. 將字元串轉換為浮點數
如果需要將一個字元串轉換為浮點數,可以使用標準庫中的stof
函數,其用法與stoi
類似。例如:
string str = "3.14";
float num = stof(str);
cout << num << endl; // 輸出3.14
2. 將數字轉換為十六進位字元串
有時我們需要將一個數字轉換為十六進位格式的字元串,可以使用stringstream
和printf
函數實現,如下所示:
int num = 255;
stringstream ss;
ss << std::hex << num;
string hex_str = ss.str();
printf("%s\n", hex_str.c_str()); // 輸出"ff"
3. 將字元串格式化為指定寬度的字元串
如果需要將一個字元串格式化為指定寬度的字元串,可以使用std::setw
和std::setfill
函數,如下所示:
string str = "hello";
string format_str = std::setw(10) << std::setfill('*') << str;
cout << format_str << endl; // 輸出"*****hello"
其中,std::setw(10)
表示指定寬度為10個字元,不足的地方用空格填充,而std::setfill('*')
表示使用*
字元填充不足的地方。
四、總結
使用C++ string實現字元串和數字的互轉可以在實際開發中提高效率,節約代碼量。我們可以使用stoi
、to_string
、stof
等函數實現基本轉換,也可以使用stringstream
、printf
等技巧實現更為複雜的操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/312679.html