Ваш зритель выбирает, чтобы показать вам байты, интерпретированные с использованием выбранной им кодировки символов, и выбирает отображение результирующих символов в символе вставки .
Другие зрители могут сделать разные выборы по обоим пунктам или позволить вам указать, что вы хотите. Например, управляет символами изображения (␁) вместо знака каретки.
Для std:string
c_str()
завершается дополнительным байтом \x00
после фактического значения. Вы часто используете c_str()
с функциями, которые ожидают завершения строки \x00
. Это относится к fprintf
. В таких случаях прочитанное заканчивается как раз перед первым увиденным \x00
.
В вашей строке несколько \x00
байт, что, конечно, способствует size()
, но fprintf
остановится прямо на первом (и не будет считаться).