将 C++ 中的数组转换为字符串

Posted

技术标签:

【中文标题】将 C++ 中的数组转换为字符串【英文标题】:Convert Array in C++ to String 【发布时间】:2020-07-11 04:22:47 【问题描述】:

我知道在 Java 中,您可以使用 Arrays.toString() 返回数组的字符串表示形式。有没有在 C++ 中提供类似功能的方法?

【问题讨论】:

你在说什么数组? char 数组被视为字符串(以空字符结尾)。其他数组将取决于值类型是否可以转换为字符串。示例:整数数组可以通过迭代它并使用std::to_string() 转换为字符串,但是是互斥体或线程对象的数组?可能没有必要或方式 阅读good C++ programming book,然后看到一个好的C++ reference website 我知道在 Java 中,您可以使用 Arrays.toString() 来返回数组的字符串表示形式。 -- 不要使用 Java 或任何其他语言作为指导在学习 C++。 【参考方案1】:

如果你的意思是一个字符数组,你可以使用类似下面的东西

std::vector arr 'a', 'b', 'c';//the array
std::string strarr.cbegin(), arr.cend();//the generated string

工作示例

#include <vector>
#include <algorithm>
#include <string>
#include <iostream>

int main()
    std::vector arr 'a', 'b', 'c';
    std::string strarr.cbegin(), arr.cend();
    std::cout << str;


Live

【讨论】:

std::vector 需要一个模板参数,这可能无法编译 @WARhead,你可以让它在 C++17 中推导出来。 @tadman 和 WARhead。请谷歌CTAD。这是自 17 年以来的 C++。【参考方案2】:

C++ 不是 Java。我建议阅读一个好的C++ programming book 并查看一些C++ reference website。请注意 C++ 的各种方言(例如 C++11 与 C++17 不同)。

请记住,C++ 数组是同构的:所有数组组件都具有相同的类型。与 Java 相比,C++ 没有像 Java Object 类这样的根类型。但是 C++ 有有趣的standard containers。请注意rule of five。你可以设计你的程序,让你的中心class MyRootClass 继承其他class

但是,您可以轻松编写一些短代码来将数组转换为字符串。

话虽如此,您可以找到有趣的开源 C++ 库,例如 POCO 或 Qt,以简化您的工作。

您还可以(并且轻松地)编写您的 C++ 元程序,生成用于声明数组的 C++ 代码并发出代码以打印或输出它们,并且您可以为此使用或改进 SWIG 工具。

还请阅读 C++ 编译器(例如 GCC 或 Clang)、链接器(例如 GNU binutils)和构建自动化(例如 GNU make 或 ninja)的文档。如果您的 C++ 编译器是 GCC,则编译 with 所有警告和调试信息,所以 g++ -Wall -Wextra -g(并学习使用 GDB 调试器)。如果您的 C++ 代码库很大(例如数十万行 C++),请考虑编写 GCC plugin 以自动生成一些用于序列化或打印例程的 C++ 代码。

将 C++ 中的数组转换为字符串

一种可能是使用半标准化的文本表示,如JSON 或YAML(可能使用sqlite 或PostGreSQL 等数据库)。两者都有 C++ 中的 open source 库,这可能会有所帮助。

另请参阅s11n 序列化库。

【讨论】:

以上是关于将 C++ 中的数组转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C++ 中的空字符序列转换为 Python 中的等效字符?

如何将字符串数组转换为 Char * 数组 c++

将C的char数组转换为C++的字符串

如何将数组中的数字字符串转换为数字?

c++ string int

将矩阵字符串数组转换为整数矩阵? C++