sgetn не обнуляет строку

sgetn Принимает char* потому что это первый аргумент и записывает символы в него. Оно делает не написать завершающий '\0' к char*,

Такое поведение кажется несовместимым с каждым разом, когда я могу найти char* написано Тем не менее, это является совместимы между Clang, gcc и Visual Studio, поэтому я не могу поверить, что это ошибка, которая есть у всех компиляторов.

Есть ли причина, по которой стандарт не требует запаздывания? '\0' к char*?

[Живой пример]

2

Решение

Потому что его можно использовать для чтения произвольных данных, а не только текста.

Возьмите, например, std::istream::read функция, это также занимает char* аргумент, но может использоваться для чтения произвольных данных, в том числе двоичных данных. Вы не ожидаете, что он добавит терминатор строки при чтении из двоичного файла?

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]