如何在 C++ 中将数字转换为字符串,反之亦然

2023-12-06

由于这个问题每周都会被问到,所以FAQ可能会帮助很多用户。

  • 如何在 C++ 中将整数转换为字符串

  • C++中如何将字符串转换为整数

  • 如何在C++中将浮点数转换为字符串

  • C++中如何将字符串转换为浮点数


C++11 更新

截至C++11标准、字符串到数字的转换以及反之亦然都内置在标准库中。以下所有功能都存在于<string>(根据第 21.5 段)。

字符串转数字

float              stof(const string& str, size_t *idx = 0);
double             stod(const string& str, size_t *idx = 0);
long double        stold(const string& str, size_t *idx = 0);
int                stoi(const string& str, size_t *idx = 0, int base = 10);
long               stol(const string& str, size_t *idx = 0, int base = 10);
unsigned long      stoul(const string& str, size_t *idx = 0, int base = 10);
long long          stoll(const string& str, size_t *idx = 0, int base = 10);
unsigned long long stoull(const string& str, size_t *idx = 0, int base = 10);

其中每一个都接受一个字符串作为输入,并尝试将其转换为数字。如果无法构造有效的数字,例如因为没有数字数据或数字超出类型的范围,则会引发异常(std::invalid_argument or std::out_of_range).

如果转换成功并且idx is not 0, idx将包含未用于解码的第一个字符的索引。这可能是最后一个字符后面的索引。

最后,整数类型允许指定基数,对于大于 9 的数字,假定使用字母表 (a=10 until z=35)。您可以找到有关可在此处解析的确切格式的更多信息浮点数字, 有符号整数 and 无符号整数.

最后,对于每个函数还有一个接受一个重载std::wstring作为它的第一个参数。

数字转字符串

string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);

这些更简单,您传递适当的数字类型并返回一个字符串。对于格式化选项,您应该返回 C++03 stringsream 选项并使用流操纵器,如其他答案中所述。

正如评论中所指出的,这些函数回落到默认的尾数精度,这可能不是最大精度。如果您的应用程序需要更高的精度,最好还是返回其他字符串格式化过程。

还定义了类似的函数,名为to_wstring,这些将返回一个std::wstring.

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

如何在 C++ 中将数字转换为字符串,反之亦然 的相关文章

  • 如何在 SQLite 中将时间戳转换为字符串?

    我有一个表 其中存储了时间戳 以毫秒为单位 我想将这些时间戳转换为人类可读的形式 这是我的表的输出示例 SELECT date raw strftime d m Y date 1000 as string FROM my table raw
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 带返回数据的 Flutter Back 按钮

    我有一个带有两个按钮的界面 可以弹出并返回 true 或 false 如下所示 onPressed gt Navigator pop context false 我需要调整应用栏中的后退按钮 以便它弹出并返回 false 有办法做到这一点吗
  • 数据注释/验证不适用于部分视图

    我根据用户输入在运行时加载了一些部分视图 Categories change function ajax url Product Create Categories option selected text replace s type G
  • 我们在哪里可以找到 Google 对象的未记录属性

    我知道自动完成有时可以帮助您找到 Google 对象的未引用方法 例如表格 API v4但我怎样才能找到属性 电子表格示例 function onEdit e Logger log e range columnStart returns t
  • 如何让p5.js在特定位置创建画布[重复]

    这个问题在这里已经有答案了 我现在在 HTML CSS 方面确实有 1 小时的经验 并且对编程 例如 Java 脚本 有更深入的理解 所以 如果我对如何在这里做某事的想法为零 请原谅我 我想创建我的 p5 画布 它也遵守我的 CSS 规则
  • 应用程序如何检测到它将被卸载? [复制]

    这个问题在这里已经有答案了 我们都知道 通常 实际上任何 防病毒应用程序在卸载之前都会触发简单的对话框 例如 您要卸载应用程序 确定吗 是 否 是的 我知道我可以使用意图过滤器拦截包删除意图 例如
  • Web客户端下载文件

    我有以下 PS 脚本来使用下载文件WebClient 下载链接位于文本文件中 下载有效 但是 我想确保不会覆盖重复的文件 因此我添加了额外的代码 该代码对于单个文件运行良好 但是 如果发现重复 则代码会因以下错误而中断 使用 2 个参数调用
  • 扩展 UILocalNotification

    我是 iOS 初学者 我尝试扩展 UILocalNotification 下面是我的班级 interface FSCustomNatification UILocalNotification typedef enum FSCustomNat
  • 如何访问 angular.dart 组件的属性或方法

    我定义了一个角度 dart 组件像这样 NgComponent selector dartcomp templateUrl dartComp html publishAs ctrl map const val val class DartC
  • 跳转目标与指令pc 0x400014高4位不同

    我正在处理我的 MIPS 分配 但收到此错误 跳转目标与指令 pc 0x400014 的高位 4 位不同 我想要一些帮助 您正尝试跳转到内存中当前 256MByte 区域之外的地址 看here 如果您需要帮助识别代码中的问题 您需要发布一些
  • 用于桌面应用程序的 Swing 与 JavaFx [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我有一个非常大的程序 当前正在使用 SWT 该程序可以在Windows Mac和Linux上运行 它是一个包含很多元素的大型桌面应用程序 现在 SWT 有点老了 我想切换到 Swing 或
  • 是否存在某些情况下您更喜欢较高的 Big-O 时间复杂度算法而不是较低的算法?

    在某些情况下您会更喜欢O log n 时间复杂度为O 1 时间复杂度 或者O n to O log n 你有什么例子吗 与较低的算法相比 选择具有较高大 O 时间复杂度的算法可能有很多原因 大多数时候 降低大 O 复杂度更难实现 需要熟练的
  • PHP - 500 而不是错误

    我有一个用 PHP 编写的页面 我无权访问服务器 我想让 PHP 遇到错误时不显示错误消息 而是给出 500 如果 display errors 关闭 PHP 5 2 默认情况下会在发生致命错误时发送 HTTP 500 如果托管使用较旧的
  • Swift:使用 self.moc.save() 保存核心数据时出现 Nil 错误

    自从我将项目更改为使用 objectWillChange send 以来 我收到零错误 因为我需要手动更新视图 因为它不会为自定义轮播视图更新自身 因为核心数据 如果我写 1 并点击下一步按钮 NavigationLink 控制台日志页面名
  • Google Cloud 端点的缓存?

    对 Cloud Endpoints 的请求会被缓存吗 官方文档对这个问题有点了解 文档如下 Cloud Endpoints 使用分布式可扩展服务代理来 提供低延迟和高性能 甚至可以为最多的人提供服务 要求严格的 API 并且可以与 Goog
  • 无需用户交互即可触发的 Javascript 事件?

    我的表单上的文本框可能会根据各种下拉列表中选择的内容而变化 有没有办法在文本框值更改时调用 JavaScript 函数 尝试了 onchange 事件 但这似乎只有在用户手动更改文本框值时才有效 Cheers Breand n 不会 由 j
  • Java Swing:蝇量级 vs 新窗口

    我正在开发一个新的应用程序 我将同时打开一些窗口 我目前正在尝试设计 GUI 但我正在努力解决两个选择 我可以使用侧面导航面板并使用页面的中心来显示每个面板的内容 这些面板将根据享元模式进行存储 我将在单击导航按钮时隐藏 显示它们 以便在隐
  • 纯 CSS 折叠手风琴

    我有一个 CSS 折叠手风琴 只有纯 CSS 它工作完美 我只有 1 个问题 现在 如果用户单击任何标签 标签一 标签二 标签三 他无法再次单击标签将其关闭 如果用户单击下一个标签 每个标签都可以关闭 我想让它成为可能 例如 用户单击标签一
  • Pandas:计算平均值,忽略自己行的值[重复]

    这个问题在这里已经有答案了 我想按组计算平均值 忽略行本身的值 import pandas as pd d col1 a a b a b a col2 0 4 3 5 3 4 df pd DataFrame data d 我知道如何按组返回
  • 获取文件移动日期时间

    当您复制文件时 在 Windows 环境中 Creation 和 LastAccess 日期时间会被修改 并且可以使用FileInfo object 但是 我找不到任何可靠的日期时间 直接链接到文件 当文件移动到文件夹中时 该日期时间会发生
  • 如何在 C++ 中将数字转换为字符串,反之亦然

    由于这个问题每周都会被问到 所以FAQ可能会帮助很多用户 如何在 C 中将整数转换为字符串 C 中如何将字符串转换为整数 如何在C 中将浮点数转换为字符串 C 中如何将字符串转换为浮点数 C 11 更新 截至C 11标准 字符串到数字的转换