如何正确使用 std::stod

2024-04-20

我正在编写一个简单的线性计算器。例如,用户可以输入两个方程(字符串),例如 y=5x+3 和 y=-3x+6。该计算器最基本的功能是它将返回这两条线的交点。

我似乎无法弄清楚的障碍是如何将字符串解析为两个数据:斜率和 y 截距。这是一个简单的计算器,因此两条线的格式均为 y=mx+b,但是,斜率和/或 y 截距都可能是非整数(即浮点数)。

我在字符串库中遇到了一个名为 stod 的函数,它将字符串中的数字转换为数值(我理解正确吗?)。

http://www.cplusplus.com/reference/string/stod/ http://www.cplusplus.com/reference/string/stod/

我的问题是,这个功能能完成这项工作吗?如果是这样,我到底如何使用“idx”参数?我不太明白。

如果这不起作用,我该如何解析用户输入的数据?

  • 两个方程都是字符串 (y=mx+b)
  • m 和 b 有专用于存储十进制值的私有变量(即 double m_ 和 double b_ 是私有成员变量)

这就是 idx 参数的工作原理:

#include <string>
#include <iostream>

int main(void)
{
    std::string data = "y=5.9568x+3.14"; //say you have a string like this..

    double y, x, m, b;
    y = 0;
    x = 0;

    std::size_t offset = 0; //offset will be set to the length of characters of the "value" - 1.
    m = std::stod(&data[2], &offset); //So we want to get the value "5.9568
    b = std::stod(&data[offset + 3]); //When we reach this line, offset has a value of 6

    std::cout<<b;
    return 0;
}

那么现在您会问为什么它的值为 6?嗯,因为:

5.9568 正好是:6 个字符的长度。因此,当我们这样做时,在下一行

b = std::stod(&data[offset + 3]);

我们实际上给它提供了一个指向地址的指针x+ 3..结果正好在开头3.14.

换句话说,它相当于:

std::stod(&data[9]);

因此 idx 参数实际上是字符串中双精度字符的索引/长度。如果字符串是:

str = "3.14159"

Then std::stod(str, &idx)将使 idx 等于:6。

如果字符串是:

str = "y = 1024.789" then std::stod(&str[4], &idx)将使 idx 等于: 8 从 &str[4] 开始..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确使用 std::stod 的相关文章

  • Volatile.Read 和 Volatile.Write 背后的逻辑是什么?

    来自 MSDN Volatile Read 读取字段的值 在需要它的系统上 插入一个 阻止处理器重新排序内存的内存屏障 操作如下 如果在该方法之后出现读或写 代码 处理器无法移动它before这个方法 and Volatile Write
  • JSON.Net 反序列化返回“null”

    我正在使用 JSON Net 反序列化 JSON 字符串 JSON 字符串是 string testJson Fruits Apple color red size round Orange Pro
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 叮当错误?命名空间模板类的朋友

    以下代码在 clang 下无法编译 但在 gcc 和 VS 下可以编译 template
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • Xamarin - SignalR 挂在连接上

    我正在尝试将我的 Xamarin 应用程序连接到托管在 Azure 上的 SignalR 后端 我遇到的问题是每次我在 HubConnection 上调用 StartAsync 时 它都会挂起客户端并且请求永远不会完成 我尝试通过应用程序进
  • 为什么不能调用带有 auto& 参数的 const mutable lambda?

    include
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • 使用 xslt 将 xml 转换为 xsl-fo 时动态创建超链接?

    我想使用 xsl 文件在 PDF 报告中创建标题 如果源文件包含超链接 则应将其呈现为超链接 否则呈现为纯文本 例如 我的 xml 如下所示 a href http google com target blank This is the h
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • 仅保留 DataFrame 中有关某些字段的重复项

    我有这个火花数据框 ID ID2 Number Name Opening Hour Closing Hour ALT QWA 6 null 08 59 00 23 30 00 ALT AUTRE 2 null 08 58 00 23 29
  • R 中的圆形堆积条形图

    我发现了这个很棒且相对简单的包可以创建漂亮的极坐标形式的归一化堆积条形图like so http chrisladroue com wp content uploads 2012 02 polarHistogramFudged png 我希
  • SQL Azure 是否支持“FOR XML”(RAW、AUTO、PATH)

    MS SQL Server 支持使用 FOR XML RAW AUTO PATH 提取关系数据 SQL Azure 支持此功能吗 如果没有 有没有人尝试过解决方法 提前谢谢你的帮助 是的 我用FOR XML PATH and FOR XML
  • C# 中的多行字符串文字

    有没有一种简单的方法可以在 C 中创建多行字符串文字 这是我现在所拥有的 string query SELECT foo bar FROM table WHERE id 42 我知道 PHP 有 lt lt
  • 颤动中闪闪发光的动画

    我想在flutter中制作一个闪闪发光的动画 如何在颤振中做到这一点 我建议采用定制油漆方法 我的 awswer 是高度可定制的 我只更改innerOuterRadiusRatio 和速度 您可以更改颜色或不透明度 星形的边数 旋转 ang
  • 检索从扭曲图像中获取的像素的原始坐标

    我有四个角从源图像 src vertices 0 corners upperLeft src vertices 1 corners upperRight src vertices 2 corners downLeft src vertice
  • Spark VectorAssembler 错误 - PySpark 2.3 - Python

    我正在使用 pySpark 2 3 0 并创建了一个非常简单的 Spark 数据框来测试 VectorAssembler 的功能 这是较大数据框的子集 其中我只选择了一些数字 双精度数据类型 列 gt gt gt cols index ho
  • YouTube v3 CORS 不考虑返回的“Access-Control-Allow-Origin”

    我有一个客户端和一个服务器 我的工作流程如下 服务器使用 API v3 将片段上传到 youtube 并获取可恢复的 url Youtube v3 API for resumable uploads https developers goo
  • SQL Server 删除超过 10 分钟的所有行

    如何删除 SQL Server 中 10 分钟后创建的所有行 谢谢 假设您有一个存储时间戳的列名称 Date column 你可以这样尝试 其中 mi 是分钟的缩写 DELETE FROM Table name WHERE Date col
  • 如何在AngularJS控制器中调用API?

    我需要在 AngularJS 控制器中执行这些 API 调用 任何例子都会有帮助 app post user auth users auth app get user logout helpers isAuthenticated users
  • 将 pandas 数据框索引到 Elasticsearch 中,无需使用 elasticsearch-py

    我想将一堆大型 Pandas 数据帧 大约数百万行和 50 列 索引到 Elasticsearch 中 在寻找如何执行此操作的示例时 大多数人会使用elasticsearch py 的批量辅助方法 https elasticsearch p
  • Friend 访问修饰符打算用在哪里?

    我看到使用 Friend 修饰符的唯一地方是在 WinForms 设计器中 如中提到的为什么Winforms中修饰符设置为Friend https stackoverflow com questions 3707055 why is the
  • 如何在codeigniter中使用composer包?

    我已经关注了这篇文章 http philsturgeon co uk blog 2012 05 composer with codeigniter http philsturgeon co uk blog 2012 05 composer
  • 在 GoDaddy 上将 Surge CNAME 记录的主机名设置为 @

    我正在尝试使用 Surge 将我的投资组合部署到我的域 www dillonbartkus com 说明如下 我使用的是通过 Google Suite 购买的 GoDaddy 域名 在图中 它显示了主机名为的 CNAME 记录www and
  • 对 Java 操作应用超时控制

    我正在使用第三方 Java 库与 REST API 进行交互 REST API 有时可能需要很长时间才能响应 最终导致java net ConnectException被抛出 我想缩短超时时间 但无法修改第三方库 我想在 Java 方法的调
  • XMPP 服务器的 libxml2 与 expat

    我正在尝试从头开始创建一个 XMPP 库 以及后来的服务器 Go http golang org 尽管语言本身无关紧要 作为学习 XMPP 协议和服务器软件开发一般知识的一种手段 正如许多人所知 XMPP 是基于 XML 的消息传递协议 它
  • 当我的名称为字符串时如何执行 JavaScript 函数

    我有 JavaScript 中函数的名称作为字符串 如何将其转换为函数指针以便稍后调用 根据情况 我可能也需要将各种参数传递到该方法中 一些函数可能采用以下形式namespace namespace function args 不要使用ev
  • Django 超出 Postgres 最大连接数

    我在 Django 应用程序中遇到问题 该应用程序在运行时超出了与 Postgres 的最大同时连接数 100 Gunicorn与异步eventlet工人 当达到连接限制时 应用程序开始返回500 错误直到可以建立新的连接 这是我的数据库配
  • 在 ViewAnimator 中的按钮上执行(单击())后,Espresso 测试卡住/不活动

    Problem 我在运行 Espresso 测试时遇到问题 在登录按钮上调用 Perform click 方法后 测试继续运行 但不会继续运行 直到 45 秒过去并且测试自动失败 同时 登录正常 Context 我有一个 Activity
  • 如何正确使用 std::stod

    我正在编写一个简单的线性计算器 例如 用户可以输入两个方程 字符串 例如 y 5x 3 和 y 3x 6 该计算器最基本的功能是它将返回这两条线的交点 我似乎无法弄清楚的障碍是如何将字符串解析为两个数据 斜率和 y 截距 这是一个简单的计算