Преобразование массива в C ++ в строку - PullRequest
0 голосов
/ 11 июля 2020

Я знаю, что в Java вы можете использовать Arrays.toString (), чтобы вернуть строковое представление массива. Есть ли метод, который выполняет аналогичную функцию в C ++?

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Если вы имеете в виду массив символов, вы можете использовать что-то вроде следующего

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

Рабочий пример

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

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

}

Live

0 голосов
/ 11 июля 2020

C ++ не Java. Я рекомендую прочитать хорошую книгу по программированию на C ++ и заглянуть на какой-нибудь справочный сайт по C ++ . Помните о различных диалектах C ++ (например, C ++ 11 не то же самое, что C ++ 17).

Помните, что массивы C ++ однородны: все компоненты массива имеют один и тот же тип . В отличие от Java, C ++ не имеет типа root, такого как Java Object class. Но в C ++ есть интересные стандартные контейнеры . Помните о правиле пяти . И вы могли бы разработать свою программу так, чтобы у вас был центральный class MyRootClass, от которого наследуются все остальные class.

Однако вы можете легко написать короткий код для преобразования массива в строку.

При этом вы можете найти интересные библиотеки C ++ с открытым исходным кодом, такие как POCO или Qt , чтобы облегчить вашу работу.

Вы также можете (и легко) напишите свою метапрограмму C ++, генерирующую код C ++ для объявления массивов и выдачи кода для их печати или вывода, и вы можете использовать или улучшить инструмент SWIG для этого.

Прочтите также документацию на ваш Компилятор C ++ (например, G CC или Clang ), ваш компоновщик (например, GNU binutils ) и автоматизация сборки (например, GNU make или ниндзя ). Если ваш компилятор C ++ - G CC, скомпилируйте с всеми предупреждениями и отладочной информацией, поэтому g++ -Wall -Wextra -g (и научитесь использовать отладчик GDB ). Если ваша база кода C ++ велика (например, несколько сотен тысяч строк C ++), подумайте о написании вашего G CC плагина для автоматической генерации некоторого кода C ++ для процедур сериализации или печати. ​​

Преобразование массива в C ++ в String

Возможно использование полустандартизированного текстового представления, например JSON или YAML (возможно, с базами данных например sqlite или PostGreSQL). Оба имеют с открытым исходным кодом библиотеки на C ++, которые могут быть полезны.

См. Также этот черновой отчет и проект RefPerSys и s11n библиотека сериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...