Как вывести char* по всю длину игнорируя '\0'?

У меня есть строка, в которой есть куча '\0' символов и мне нужно их учитывать при выводе.

Пример:

char *data1 = "a\0bcd\nefg\01234";
std::cout << data1 << std::endl;

Вывод будет таким:

а

Когда ожидается:

a bcd
efg 1234

Как работать со всей длиной строк вида char*?


Ответы (1 шт):

Автор решения: Harry

Встречный вопрос - а как вы определите, сколько у вас символов в строке?

Вот если

char data1[] = "a\0bcd\nefg\01234";

тогда можно посимвольно (и то, если data1 не передается куда-то в функцию):

for(auto c: data1) cout << c; cout << endl;

Если будете передавать в другую функцию - то только вместе с размером. Или через какой-то вектор, строку C++ и т.п.

На всякий случай - учтите, что в вашей конкретной строке как символ будет рассматриваться \012, а не просто \0.

→ Ссылка