Ответил ли этот на ваш вопрос?
Я никогда не использовал reinterpret_cast
, и задаюсь вопросом, работает ли он в случае, который ему нужен, это не запах плохого дизайна. В базе кода я работаю над dynamic_cast
. Разница с static_cast
заключается в том, что dynamic_cast
выполняет проверку времени выполнения, которая может (безопаснее) или не может (больше служебных) быть тем, что вы хотите (см. msdn ).
A string
ведет себя по-разному, как массив из char
(*). Вам нужно установить print
на char
тип вместо string
, так как вы пытаетесь получить определенный элемент из string
. Таким образом, ваш print
должен выглядеть так:
char print = temp[0];
(*), но это действительно сложнее.
Вот пример кода что выводит вывод .
Ваша интуиция в основном верна: вы используете оператор квадратных скобок []
для доступа к элементу в индексированной позиции в коллекции или последовательности. Таким образом,
disectedString[0]
означает «первый элемент disectedString»; temp[0]
означает «первый элемент temp»; То, что вы перепутали, - это типы, как объяснили комментаторы и ответ @ demogorgon.net.
Теперь, с современным C ++, вы можете «играть немой» и не объявлять то, что знаете типы будут:
std::string disectedString[5];
disectedString[0] = "011001";
auto temp = disectedString[0];
auto print = temp[0];
Обратите внимание на использование auto
вместо определенного имени типа. Это будет работать так, как вам бы хотелось. Затем вы можете использовать use print
и делать, например:
std::cout << print;
, и это выведет 0
.
Кстати, я считаю, должен пересмотреть ваш выбор имен:
print
следует ссылаться на функцию или метод, который печатает вещи; Я бы предложил first_character
или char_to_print
или просто c
, если вы хотите быть краткими. temp
больше не является временной переменной, чем, скажем, print
. disectedString
не является строкой, это массив строк, что запутывает.
std::string
s являются, по существу, массивамиchar
s. Они ведут себя как они в некоторой степени. – einpoklum 13 July 2018 в 14:58temp.at()
вместоtemp[0]
? Последний является вполне допустимым кодом . – einpoklum 13 July 2018 в 15:03chars
. редактируя его сейчас. @einpoklum – demogorgon.net 13 July 2018 в 15:07