c++ - 在 C++ 中将数据从一种类型转换为另一种类型?

标签 c++

<分区>

我想了解专业级软件中的类型转换是如何发生的? 考虑以下转换:

  1. 翻倍
  2. 双倍整数
  3. 要加倍的字符串
  4. 加倍到字符串

目前,我正在为我的项目使用 Qt,它具有用于执行这些任务的 API。 所以我只想知道人们是如何仅使用标准 C++ 执行这些转换的。 准确性、速度和内存力按其各自的顺序排列为优先级。

最佳答案

对于 int 到 double 你可以简单地做 static_cast<double>(int_value); 从 double 到 int 这取决于具体情况,大多数时候 static_cast 都可以,但是,有时您需要对四舍五入为 int 的值进行特定控制。为此,您可以使用类似 floor 的函数, round , 或 ceil .

对于 string to anything 和 anything to string 有几个选项:

snprintf() - 不推荐,除非你知道你在做什么。精度难以控制

stringstream/istringstream - 这具有良好的准确性且易于控制

boost::format - 个人最爱,查看文档:http://www.boost.org/doc/libs/1_53_0/libs/format/doc/format.html

就性能而言,我会选择 snprintf 在某些情况下是最快的,因为它不需要分配。

关于c++ - 在 C++ 中将数据从一种类型转换为另一种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19678278/

相关文章:

c++ - C编程fwrite跳转到文件末尾

c++ - 为 C++ 程序编写 makefile

c++ - OSX OpenGL 4.1 glEnableVertexAttribArray glDrawArrays GL_INVALID_OPERATION

c++ - 如何在 C++ 中创建强密码字符串?

c++ - 如何将 unicode 字符串转换为其 unicode 转义字符?

c++ - friend 说明符如何在 C++ 中工作?

c++ - 错误: some class is not a template

c++ - 使用 2 个队列实现堆栈

c++ - [C++][SFML 2.2] 奇怪的性能问题 - 移动鼠标会降低 CPU 使用率

c++ - 在非阻塞模式下接受接受服务时,C++ OpenSSL无法执行握手。正确的方法是什么?