21xrx.com
2024-09-19 10:03:37 Thursday
登录
文章检索 我的文章 写文章
C++如何将字符串转换为浮点数(double)
2023-07-11 02:46:39 深夜i     --     --
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",否则打印转换后的浮点数。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复