c++ - 在构造函数初始化列表中转换值 C++

标签 c++ class vector constructor

假设我有一个接受字符串类型 vector 的构造函数。 如果其中一个类成员不是字符串而是 double ,我将如何在构造函数中将字符串 vector 元素转换为 double ?

Foo::Foo(const std::vector<string>& v):
d(v[0].toDouble()){}

我知道 toDouble() 在 C++ 中不起作用,我只是把它放在这里作为我想做的事情的例子。

谢谢。

最佳答案

当然,这不是唯一的方法。使用 std::stod() 是一种方法,但如果您需要处理转换错误,则必须分两步完成:

Foo::Foo(const std::vector<string>& v) : d(convert(v[0]))
{
}

第二步是这个convert(),一个私有(private)静态方法:

double Foo::convert(const std::string &s)
{
   std::istringstream i(s);
   double v;

   i >> v;
   if (i.fail())
   {
       // Figure out what to do, here
   }
   return v;
}

这里的家庭作业是弄清楚如果转换失败该怎么办,并采取适当的措施。

关于c++ - 在构造函数初始化列表中转换值 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864323/

相关文章:

android - GLES 3.0 包括 gl2ext.h

c++ - C++ 类之间的变量超出范围

c++ - 使用 apt 安装在 Ubuntu 20.04 LTS 上找不到 c++ boost 头文件

java - 将 c++ unix 服务器/套接字连接到 java windows 客户端/套接字

php - 管理存储在数据库中的 php 应用程序设置

class - 在 TypeScript 的类中实现索引器

std::vector<std::array<char, 2>> 的 C++ 数据连续性

c++ - 如何在 CUDA 中实现基本的 C++ 二维数组循环

arrays - 在 AS3 中使用值数组初始化 Vector 是否会部分违背 Vector 的目的?

c++ - 如何重载 >> 运算符以获取可变参数列表