sgetn
Принимает char*
потому что это первый аргумент и записывает символы в него. Оно делает не написать завершающий '\0'
к char*
,
Такое поведение кажется несовместимым с каждым разом, когда я могу найти char*
написано Тем не менее, это является совместимы между Clang, gcc и Visual Studio, поэтому я не могу поверить, что это ошибка, которая есть у всех компиляторов.
Есть ли причина, по которой стандарт не требует запаздывания? '\0'
к char*
?
Потому что его можно использовать для чтения произвольных данных, а не только текста.
Возьмите, например, std::istream::read
функция, это также занимает char*
аргумент, но может использоваться для чтения произвольных данных, в том числе двоичных данных. Вы не ожидаете, что он добавит терминатор строки при чтении из двоичного файла?
Других решений пока нет …