2017-01-17 3 views
1

Является ли поведение записи непечатаемого символа неопределенным или определяемым реализацией, если символ написан через printf/fprintf? Я смущен, потому что слова в стандарте C N1570/5.2.2 говорят только о семантике отображения для печати символов и алфавитных escape-последовательностей.Каково поведение написания непечатаемого символа в C/C++?

Кроме того, что, если символ написан через std::ostream (только на C++)?

+0

Дайте нам пример непечатаемого и неконтролируемого символа. – user694733

+1

@LP: быть педантичным, зависит от устройства вывода, получающего данные. Телетайп будет вести себя иначе, чем файл или окно или принтер GUI. –

+0

Кроме того, выходной поток может быть '/ dev/null'. По-видимому, он не будет печатать даже «печатные» символы. –

ответ

4

Вывод символов ASCII без печати (управления) определяется реализацией.

В частности, толкование является обязанностью устройства вывода.

Edit 1:
Когда устройство вывода открывается как файл, он может быть открыт как binary. При открытии binary выход не переводится (например, окончание строки).

+0

Формально это не «реализация», а конкретная реализация. В определении языка «определенная реализация» означает, что соответствующий компилятор должен документировать, что он делает. –

+0

Я раньше не замечал эту часть Стандарта; формулировка интересна. Если в стандарте указано, что '\ a' должно вызывать видимое или звуковое предупреждение, оно не может быть реализовано на платформах, которые не имеют средств для поддержки такого поведения. Если в Стандарте указано, что '\ a' должен сопоставляться символу, который создает такое предупреждение на платформах, где он существует, это можно рассматривать как предложение о том, что платформы без такой функции следует оценивать как« неполноценные ». Чтобы избежать какой-либо из этих проблем, он использует «предназначенный» язык, который я не видел в другом месте, но мог бы быть полезным ... – supercat

+0

... также во многих других частях Стандарта. – supercat

Смежные вопросы