Шаг 470.
Библиотека STL. Ввод-вывод с использованием потоковых классов. Ввод-вывод специальных типов. Тип char*

    На этом шаге мы рассмотрим особенности ввода и вывода значений типа char*.

    С-строки (типа char*) вводятся по словам. Иначе говоря, при чтении С-строки начальные пропуски по умолчанию игнорируются, а чтение продолжается до следующего пропуска или конца файла. Игнорированием начальных пропусков можно управлять при помощи флага skipws.

    Из этого описания следует, что строка может иметь произвольную длину. Некоторые программисты С ошибочно считают, что максимальная длина строки ограничивается 80 символами. На самом деле такого ограничения не существует. Следовательно, программист должен сам следить за своевременным завершением слишком длинных строк. Для этого следует всегда задавать максимальную длину читаемой строки. Обычно это делается примерно так:

  char buffer[81];  // 80 символов и \0 
  std::cin >> std::setw(81) >> buffer;

    Манипулятор setw() и соответствующий параметр потока данных подробно будут расмотрены в следующих шагах.

    Тип string стандартной библиотеки C++ автоматически растет по мере необходимости. Гораздо проще и безопаснее использовать класс string вместо char*. Кроме того, он поддерживает удобную функцию построчного ввода (смотри 377 шаг). Постарайтесь обойтись без С-строк и используйте обычные строковые классы.

    На следующем шаге мы рассмотрим тип void*.




Предыдущий шаг Содержание Следующий шаг