21xrx.com
2025-03-26 23:09:40 Wednesday
文章检索 我的文章 写文章
C++如何将字符串转换为浮点数(double)
2023-07-11 02:46:39 深夜i     25     0
C++ 字符串 浮点数 转换 double

在C++中,需要将字符串转换为浮点数时,可以使用字符串流 stringstream 来实现。字符串流是一个类,可以读写字符串,类似于输入、输出流,也可以进行数据格式转换。下面是一个示例代码:

#include <iostream>
#include <sstream>
using namespace std;
int main()
{
  string str = "3.1415926";
  double num;
  stringstream ss(str);
  ss >> num;
  cout << "num = " << num << endl;
  return 0;
}

在上述代码中,首先定义一个字符串 str,并将其赋值为 "3.1415926"。然后定义一个 double 变量 num,用来存储转换后的浮点数。接着,使用字符串流 stringstream 将字符串 str 读入到其中。最后,使用流运算符 >> 将字符串中的数据格式转换为浮点数,并将结果存储在变量 num 中。在输出 num 变量时,使用 cout 语句将其打印出来。

需要注意的是,如果涉及到字符串中存在非数字字符的情况,需要进行特殊的处理,否则会导致转换失败。例如,如果字符串中包含字母,则可以使用 isdigit 函数来判断字符串是否为数字。如果不是数字,则需要使用字符串流的 fail 函数来判别转换是否成功。例如:

#include <iostream>
#include <sstream>
#include <cctype>
using namespace std;
int main()
{
  string str = "1a2b3c";
  double num;
  stringstream ss(str);
  if (isdigit(str[0]) || str[0] == '-' || str[0] == '+')
  {
    ss >> num;
    if (ss.fail())
    
      cout << "Conversion failed" << endl;
    
    else
    
      cout << "num = " << num << endl;
    
  }
  else
  
    cout << "Invalid input" << endl;
  
  return 0;
}

在上述代码中,首先定义一个字符串 str,并将其赋值为 "1a2b3c"。之后,判断字符串第一个字符是否为数字、加号或减号,如果是,则进行转换;否则,输出 "Invalid input"。在进行转换时,使用字符串流的 fail 函数判断转换是否成功,如果失败则打印 "Conversion failed",否则打印转换后的浮点数。

  
  

评论区