С++ для начинающих

Строковый ввод


Считывание можно производить как в C-строки, так и в объекты класса string. Мы рекомендуем пользоваться последними. Их главное преимущество – автоматическое управление памятью для хранения символов. Чтобы прочитать данные в C-строку, т.е. массив символов, необходимо сначала задать его размер, достаточный для хранения строки. Обычно мы читаем символы в буфер, затем выделяем из хипа ровно столько памяти, сколько нужно для хранения прочитанной строки, и копируем данные из буфера в эту память:

#include <iostream>

#include <string.h>

char inBuf[ 1024 ];

try

{

   while ( cin >> inBuf ) {

           char *str = new char[ strlen( inBuf ) + 1 ];

           strcpy( str, inBuf );

           // ... сделать что-то с массивом символов str

           delete [] str;

   }

}



catch( ... ) { delete [] str; throw; }

Работать с типом string значительно проще:

#include <iostream>

#include <string.h>

string str;

while ( cin >> str )

        // ... сделать что-то со строкой

Рассмотрим операторы ввода в C-строки и в объекты класса string. В качестве входного текста по-прежнему будет использоваться рассказ об Алисе Эмме:

Alice Emma has long flowing red hair. Her Daddy says

when the wind blows through her hair, it looks almost

alive, like a fiery bird in flight. A beautiful fiery

bird, he tells her, magical but untamed. "Daddy, shush,

there is no such creature," she tells him, at the same time

wanting him to tell her more. Shyly, she asks, "I mean,

Daddy, is there?"

Поместим этот текст в файл alice_emma, а затем перенаправим на него стандартный вход программы. Позже, когда мы познакомимся с файловым вводом, мы откроем и прочтем этот файл непосредственно. Следующая программа помещает прочитанные со стандартного ввода слова в C-строку и находит самое длинное слово:

#include <iostream.h>

#include <string.h>

int main()

{

           const int bufSize = 24;

           char buf[ bufSize ], largest[ bufSize ];



Содержание раздела