Это тривиально, возможно, глупо, но мне нужно понять, в каком состоянии cout остается после того, как вы попытаетесь распечатать содержимое указателя символа, инициализированного в '\ 0' (или 0). Взгляните на следующий фрагмент:
const char* str;
str = 0; // or str = '\0';
cout << str << endl;
cout << "Welcome" << endl;
В приведенном выше фрагменте кода строка 4 не будет выводить «Welcome» на консоль после попытки печати str в строке 3. Следует ли мне знать о каком-либо поведении? Если я заменю строку 1-3 на cout << '\ 0' << endl; </strong>, сообщение «Welcome» в следующей строке будет успешно выведено на консоль.
ПРИМЕЧАНИЕ. Строка 4 просто молча не печатается. Нет предупреждений, сообщений об ошибках или чего-либо еще (по крайней мере, без использования компилятора MinGW (g ++)). Это произвело исключение, когда я скомпилировал тот же код, используя компилятор MS cl.
РЕДАКТИРОВАТЬ: Чтобы рассеять представление о том, что код не работает, только когда вы присваиваете str для '\ 0', я изменил код, чтобы присвоить 0 - что ранее было прокомментировано