首頁 >後端開發 >C++ >將以下內容翻譯為中文:C++程式將字串轉換為浮點數

將以下內容翻譯為中文:C++程式將字串轉換為浮點數

WBOY
WBOY轉載
2023-09-13 11:57:021232瀏覽

將以下內容翻譯為中文:C++程式將字串轉換為浮點數

C 中使用靜態型別。為了編寫程序,變數必須定義為特定類型。有時必須讀取來自控制台或檔案的輸入。在這種情況下,程式被賦予字串資料。需要特殊操作才能將它們轉換為其他資料類型。本文將提供將字串轉換為浮點整數的 C 方法。可以使用幾種不同的方法來實現此目的。分別探索它們中的每一個。

在 C 中使用字串流

流是C 中的一個很棒的工具。檔案流、標準輸入/輸出流等都是這些流的例子。 stringstream是一個不同的流存在。它透過接受一個字串作為輸入來進行操作,類似於其他流。我們必須導入sstream頭檔才能使用stringstream。可以使用插入運算子(>>)或提取運算子(

文法

#include < sstream >
stringstream streamObject ( <a string input> );

要使用流讀取特定類型的輸入,語法如下 -

文法

<data type> variable;
streamObject >> variable;

演算法

讓我們看看演算法以了解其整體工作原理。

  • #將字串物件x作為輸入
  • 建立一個stringstream對象,命名為ss,並將x傳遞給該物件
  • 建立一個浮點變數 xFloat
  • 使用 ss 中的插入運算子將浮點數儲存到 xFloat

範例

#include <iostream>
#include <sstream>

using namespace std;
float solve( string myString) {
   float x;
   stringstream ss( myString );
   ss >> x;
   return x;
}

int main()
{
   string aNumber = "3.14159";
   float convNumber = solve( aNumber );
   cout << "The given number is: " << convNumber << endl;
   cout << "6.5 more than the given number is: " << convNumber + 6.5 <<
   endl;
}

輸出

The given number is: 3.14159
6.5 more than the given number is: 9.64159

從這個範例中可以明顯看出,該數字是從字串物件中檢索的。因為這是實際的浮點數據,所以我們可以用浮點表示法將 6.5 加到自身並顯示結果。

在C 使用sscanf()

一種可比較的方法(在C中也適用)是使用sscanf()函數。此函數接受一個字元陣列作為輸入和格式字串,就像標準的scanf()函數一樣。現在它從字串中讀取所請求的值,並將其附加到由變數的位址指向的變數上。請查看sscanf()函數的語法。

文法

scanf ( <a string input>, <format string>, address(s) of variable );

演算法

讓我們看看演算法以了解其整體工作原理。

  • #將字串 x 作為類似 C 字元陣列格式的輸入
  • 使用帶有參數 x、格式字串和變數位址的 sscanf() 函數
  • 變數值將直接從sscanf()函數中儲存。

範例

#include <iostream>
#include <sstream>

using namespace std;
float solve( string myString) {
   float x;
   sscanf( myString.c_str(), "%f", &x );
   return x;
}

int main()
{
   string aNumber = "6.8";
   float convNumber = solve( aNumber );
   cout << "The given number is: " << convNumber << endl;
   cout << "2.5 more than the given number is: " << convNumber + 2.5 <<
   endl;
}

輸出

The given number is: 6.8
2.5 more than the given number is: 9.3

應用程式的運作方式與以前完全相同,但有一些我們必須注意的地方。 sscanf() 方法不支援類似 C 的字串物件。它需要一個類似 C 的字元數組。為了實現這一點,我們使用 c_str() 方法將提供的字串參數轉換為類似於 C 的字元陣列。

在C 中使用stof()

使用「字串」頭檔中的 stof() 方法是將字串轉換為整數的另一種快速而簡單的方法。此函數在接收到字串物件作為輸入後將其轉換為對應的浮點數。

文法

#include <string>
stof ( <integer in string format> );

演算法

  • 將字串物件x作為輸入
  • xFloat = stoi( x )
  • 從給定字串 x 傳回 xFloat 作為浮動變數。

範例

#include <iostream>
#include <sstream>

using namespace std;
float solve( string myString) {
   float x;
   x = stof( myString );
   return x;
}

int main()
{
   string aNumber = "6.8";
   float convNumber = solve( aNumber );
   cout << "The given number is: " << convNumber << endl;
   cout << "2.5 more than the given number is: " << convNumber + 2.5 <<
   endl;
}

輸出

The given number is: 6.8
2.5 more than the given number is: 9.3

在C 中使用atof()

儘管 atof() 在 C 語言中也可用,但它與 stof 相當。可以使用字元數組格式提交字串。透過導入cstdlib庫,你就可以得到它。否則,就沒有真正的區別。讓我們檢查一下語法。

文法

#include <cstdlib>
atof ( <floating number in character array format> );

演算法

  • 將字串物件x作為輸入,以C語言字元陣列格式。
  • xFloat = atoi( x )
  • 從給定字串 x 傳回 xFloat 作為浮點變數。

範例

#include <iostream>
#include <sstream>

using namespace std;
float solve( string myString) {
   float x;
   x = atof( myString.c_str() );
   return x;
}

int main()
{
   string aNumber = "8.9";
   float convNumber = solve( aNumber );
   cout << "The given number is: " << convNumber << endl;
   cout << "6.5 more than the given number is: " << convNumber + 6.5 <<
   endl;
}

輸出

The given number is: 8.9
6.5 more than the given number is: 15.4

結論

有多種方法可以將字串轉換為浮點數。前兩種方法(使用 stringstream 和 sscanf())是將字串轉換為任何資料類型而無需更改任何其他內容的通用方法;唯一會改變的是最終變數的類型。 stof() 和 atof() 這些函數僅用於將字串轉換為浮點數。轉換為不同資料類型的其他函數是等效的。由於它們是基於 C 的函數,因此 sscanf 和 atof() 不接受字串物件。在使用它們之前,我們必須使用 c_str() 函數將字串轉換為字元陣列。

以上是將以下內容翻譯為中文:C++程式將字串轉換為浮點數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除