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.142. 將數字轉換為十六進位字元串
有時我們需要將一個數字轉換為十六進位格式的字元串,可以使用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
微信掃一掃
支付寶掃一掃