89787

Работа со строками в С++

Лекция

Информатика, кибернетика и программирование

Для работы со строками в С++ можно использовать объекты класса string и функции по работе ними (подключите библиотеку string.h) или воспользоваться стандартным типом char.

Русский

2015-05-13

63.73 KB

7 чел.

Работа со строками в С++

Для работы со строками в С++ можно использовать объекты класса string и функции по работе ними (подключите библиотеку string.h) или воспользоваться стандартным типом char.

Класс string

string a;//описание строки а

   cin >>a; //ввод слова до пробела

   int i, l=a.size();//размер строки

cout<<"длина строки: "<<a<<"\n равна "<<l<< " или "<<a.length()<<endl;

//вывод всех символов строки

for (i=0;i<l;i++) cout<<a[i]<<endl;

Ввод строки с пробелом, используя string

//ввод и вывод всей строки вместе с пробелами до нажатия Enter

string line;

getline (cin, line);

cout << line << endl;

//внимание! перевод строки не считывается.

Ввод строки с пробелом, используя char

char c[100]; int i=0;

cin>>noskipws;//отключаем пропуск пробелов

do{

   std::cin>>c[i];

}while(c[i++]!=10); // ввод до нажатия клавиши Enter

/* }while(c[i++]!=‘.’); // ввод до точки */

c[i]='\0';

cout<<i-1<<'\n';//количество символов в строке

cout<<c;

//восстановить настройки «пропуск пробелов»

cin>>skipws;

cin>>c;//обычный ввод строки

cout<<c;//и вывод строки

Посимвольный ввод/вывод, используя потоковый ввод/вывод

int d;

while((d=cin.get())!=EOF) //подключите stdio.h для EOF

//до символа конца файла (ctrl+Z, Enter)

   cout.put(d);

int b;

while((b=cin.get())!=10)

//до символа конца строки

   cout.put(b);

Ввод только чисел, используя string

#include <sstream>

string mystr; float price=0; int quantity=0;

cout << "Enter price: "; getline (cin,mystr);

stringstream(mystr) >> price;

cout << "Enter quantity: "; getline (cin,mystr);

stringstream(mystr) >> quantity;

cout << "Total price: " << price*quantity << endl;

Перевод из строки в число, используя char и stdlib.h

char * szString = new char[17];  int i; szString = “0123456789";

i = atoi(szString);//alfa to integer

cout<<i<<‘\n’; delete szString;

char a[10]="12.34“; float f;

f=atof(a);//alfa to float

cout<<'\n'<<f;

long int k; k=atol(a);

cout<<'\n'<<k;

Перевод из строки в число, используя string и sstream.h

template <typename T> string toString(T val)

   {  ostringstream oss;

       oss<<val;  return oss.str(); }

string str;

int i;     cin>>i;  str = toString(i); cout<<str;

float f;   cin >>f; str = toString(f);cout<<str;

ostringstream oss; oss<<i; s=oss.str();

Перевод из числа в строку, используя char и stdlib.h

char * szString = new char[17];

int i = 1234567890;

itoa(i,szString,10);  //int to alfa

cout<<szString;

delete szString;

char a[10]; long int k;

cin>>i>>k;

itoa(i*10,a,10); cout<<'\n'<<a;

ltoa(k/4,a,10); cout<<'\n'<<a;

//перевод из float в char функции нет!

Перевод чисел в строку, используя string и sstream.h

template <typename T> string toString(T val)

   {  ostringstream oss;

       oss<<val;  return oss.str(); }

string str;

int i;     cin>>i;  str = toString(i); cout<<str;

float f;   cin >>f; str = toString(f);cout<<str;

ostringstream oss; oss<<i; s=oss.str();

Ввод времени и даты, используя char

char c; int mm, hh, ss, d, m, y;

cout<<“введите время по формату час:мин:сек -> ”;

cin >>hh>>c>>mm>>c>>ss;

cout<<hh<<‘-’<<mm<<‘-’<<ss<<endl;

cout<<“введите дату по формату день/месяц/год:”;

cin >>d>>c>>m>>c>>y;

cout<<d<<‘-’<<m<<‘-’<<y<<endl;

Вставка подстроки

//вставка подстроки с позиции 0

string a=“variable”;    

  a.insert(0,"const");

   cout<<a<<endl;

Слияние строк

//конкатенация (слияние) двух строк

   string a, b("moroz");

   a="oy, "+b+", "+b+"!";

   cout<<a<<endl;

Замена подстроки

//замена 2 символа на подстроку, начиная с 0 позиции

string a=“marka”;     

a.replace(0,2,"oh");

   cout<<a<<endl;

Копирование подстроки

//выделение подстроки из строки а, 

//начиная с 4 символа длиной 5

string a=“informatika”;    

cout<<a.substr(4,5)<<endl;

Удаление символа "o"

string a=“moloko”;    

int n;

   while((n=a.find("o"))!=-1){

     a.erase(n,1);

     cout<<n<<a<<endl;

   }

Обмен строк

string a=“mama, b=“papa”;

a.swap(b);

   cout<<"a="<<a<<endl;

   cout<<"b="<<b<<endl;

Образование новой строки

string a, s=“”;//пустая строка

cin >>a;

for (int i=0;i<a.size(); i++)

{

 if (a[i]<=‘9and a[i]>=‘0’) s=s+a[i];

}

s=s+’\0’;//добавим конец строки

cout<<s;//вывод только цифр

Вывод строк в файл 

#include <fstream.h>

string lines;

ofstream myfile ("example.txt");

if (myfile.is_open()) {

myfile << "This is a line.\n";

myfile << "This is another line.\n";

myfile.close(); }

else 

cout << "Unable to open file";

Ввод строк из файла 

#include <fstream.h>

ifstream myfile ("example.txt");

if (myfile.is_open()) {

while ( myfile.good() ) {

getline (myfile,lines);

cout << lines << endl; }

myfile.close(); }

else

cout << "Unable to open file";


 

А также другие работы, которые могут Вас заинтересовать

39965. Учебная геологическая практика 865 KB
  4 Порядок проведения практики. Оценка практики. Цели и задачи практики Учебная геологическая практика проводится в летнее время после изучения студентами курса Инженерная геология.
39966. ГИДРОПНЕВМОПРИВОД МЕТАЛЛУРГИЧЕСКИХ МАШИН 3.27 MB
  Руководитель курсовой работы сообщает каждому студенту номер задания и номер варианта. Расчетно-пояснительная записка должна содержать оглавление с наименованием всех основных разделов записки; задание; введение, в котором излагаются достоинства и недостатки объемного гидропривода
39967. Гидропривод металлургических машин 8.17 MB
  Рисунок 1 Схемы иллюстрирующие принцип действия объёмного гидропривода. Из рисунка 1а следует что при приложении силы Р к закрытому сосуду через поршень эта сила уравновешивается силой давления жидкости силой трения пренебрегаем и силой тяжести тоже Положение сохраняется если в качестве сосуда возьмём два гидроцилиндра соединённых гидролинией рисунок 1б При перемещении поршня 1 произойдёт вытеснение жидкости под поршнем 2. Реверсирование гидромотора можно осуществить также изменением направления потока жидкости направляемого насосом...
39968. Проектирование привода технологического оборудования 1.54 MB
  Модуль числа зубьев колес и коэффициенты смещения . Модуль числа зубьев колес и коэффициенты смещения. Определим размеры характерных сечений заготовок по формулам тогда мм Кm = 20 – коэффициент учитывающий вид передачи; Диаметр заготовки колеса равен Выбираем материал для колеса и шестерни – сталь 45 термообработка – улучшение твердость поверхности зуба шестерни 269302 HB Dm1 = 80 мм Dm1 Dm твердость поверхности зуба колеса 235262 НВ Sm1 = 80 мм Sm1 Sm. Для их определения используем зависимость Пределы контактной...
39969. Расчет эффективности проекта реконструкции установки АВТ-4 547.41 KB
  Приведены расчеты: анализ использования производственной мощности расчеты производственной программы и производственной мощности материального баланса установки до и после реконструкции расчет ФЗП и себестоимости продукции а также расчет основных техникоэкономических показателей и эффективность инвестиционного проекта кроме того приводится анализ рынка продукции нефтеперерабатывающих заводов. Введение 3 1 Анализ рынка продукции нефтеперерабатывающих заводов 5 2 Анализ использования производственной мощности 9 3 Расчет производственной...
39970. Расчет эффективности проекта реконструкции ОАО «Газпром нефтехим Салават» установка АВТ-4, цех №14 642.35 KB
  При общем объеме экспорта дизельного топлива из России в дальнее зарубежье в количестве 386 млн тонн дизельное топливо класса Евро5 составляет около 22 т. На российских НПЗ около половины всех печных агрегатов имеют КПД 50 – 60 при среднем показателе на зарубежных заводах – 90. Рисунок 4 Индекс Нельсона на НПЗ в РФ Наличие на НПЗ процессов прямой перегонки нефти и установок улучшающих качество прямогонных фракций позволяют получить глубину не более 60 наличие процессов переработки вакуумного газойля увеличивает глубину...
39971. Разработка организации технического обслуживания и ремонта МТП в ЦРМ хозяйства с годовым объемом работ 56000 часов 205.66 KB
  В курсовом проекте рассчитана центральная ремонтная мастерская хозяйства обоснован технологический процесс технического обслуживания и ремонта машинного парка в ЦРМ хозяйства с годовым объемом работ 56000 часов разработан компоновочный план ЦРМ технологическая планировка участка ТО и диагностики разработан генеральный план РОБ хозяйства спроектирован технологический процесс восстановления оси произведена техникоэкономическая оценка ЦРМ. Распределение годового объема работ по объектам ремонта 1. Технологический процесс ТО и ремонта...
39972. Процесс деятельности предприятия, в области управления персоналом, отраженный на диаграммах нотации IDEF0 692.17 KB
  В рамках деятельности по управлению персоналом возникает закономерная потребность оценки состояния человеческого ресурса. Соответственно основной целью является не только проведение процедуры оценки но и процесс использования результатов. В рамках данной темы планируется рассмотреть в теоретической части: привязка процесса оценки к конкретной категории персонала или подразделению организации; установление взаимосвязи деловой оценки с другими направлениями деятельности службы управления персоналом: обучением управлением карьерой...
39973. Классификация причин уязвимости Windows NT 36.89 KB
  Классификация пользователей Unix Суперпользователь Обычные пользователи Специальные пользователи Псевдопользователи Классификация пользователей Windows Администраторы Обычные пользователи Специальные пользователи Псевдопользователи Анонимный пользователь Уязвимости Unix Наличие демонов Механизм SUID SGIDпроцессов Излишнее доверие Человеческий фактор Уязвимости Windows Серверы Системные процессы Анонимный пользователь Человеческий фактор Совместимость с другими ОС Классификация причин уязвимости Windows...