Строка - последовательность символов переменной длины. Чтобы использовать тип string, необходимо включить в код заголовок string. Поскольку string принадлежит библиотеке, он определен в пространстве имен std.

Наиболее распространенные операции класса string представлены в таблице:

Операция Объяснение
cout << s Выводит строку s в поток вывода cout. Возвращает поток cout.
cin >> s Читает разделенную пробелами строку s из потока cin. Возвращает поток cin.
getline(cin,s) Читает строку ввода из потока cin в переменную s. Возвращает поток cin.
s.empty() Возвращает значение true, если строка s пуста. В противном случае возвращает значение false.
s.size() Возвращает количество символов в строке s
s[n] Возвращает ссылку на символ в позиции n строки s; позиции отсчитываются с 0.
s1 + s2 Возвращает строку, состоящую из содержимого строк s1 и s2
s1 = s2 Заменяет символы строки s1 копией содержимого строки s2
s1 == s2 Строки s1 и s2 равны, если содержат одинаковые символы. Регистр символов учитывается.
s1 != s2 Строки s1 и s2 не равны, если содержат разные символы. Регистр символов учитывается.
<, <=, >, >= Сравнение зависит от регистра и полагается на алфавитный порядок символов

Для чтения слов, отделенных пробелами достаточно использовать cin

#include <iostream>
#include <string>
using namespace std;

int main()
{ 
 string word;
 while (cin >> word)
 cout << word << endl;
 return 0;
}

Для чтения строки с пробелами необходимо использовать getline. Можно добавить проверку на пустоту и вывод длины строки.

#include <iostream>
#include <string>
using namespace std;

int main()
{ 
 string line;
 getline(cin , line);
 if (!line.empty())
 cout << line << endl;
 
 string::size_type length = line.size();
 cout << length << endl;
 return 0;
}

Длина строки возвращает значение не int, как ожидалось, а string::size_type. Запись выглядит довольно громоздко. Ее можно заменить на

auto length = line.size();

или

decltype(line.size()) length = line.size();

в зависимости от ситуации. Компилятор должен поддерживать стандарт С++11 для одной из двух таких записей, иначе код компилироваться не будет.


 Похожие публикации
2016-01-31 • Просмотров [ 270 ]