将 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++ 中的数组转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章