89787

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

Лекция

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

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

Русский

2015-05-13

63.73 KB

11 чел.

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

Для работы со строками в С++ можно использовать объекты класса 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";


 

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

23912. Эсхил Прометей прикованный 16.62 KB
  А затем когда разозленный Зевс не хочет чтобы люди могли варить и жарить доставшееся им мясо и отказывается дать им огонь Прометей похищает этот огонь тайком и приносит людям в полом тростнике. Прометей стал величавей и возвышенней: он не хитрец и вор а мудрый провидец. Само имя Прометей значит Промыслитель.
23913. Аристофан Всадники 16.49 KB
  На сцене их четверо: двух зовут настоящими именами Никий и Демосфен третьего зовут Кожевник настоящее имя ему Клеон а четвертого зовут Колбасник этого главного героя Аристофан выдумал сам. А противник их Клеон он и вправду был ремесленникомкожевником требовал добить врага и продолжать войну до победы. Итак на сцене дом хозяина Народа а перед домом сидят и горюют два его рабаприслужника Никий и Демосфен: были они у хозяина в милости а теперь их оттер новый раб негодяй кожевник. Тот хлебает а кожевнику бросает все лакомые...
23916. Аристофан Облака 15.83 KB
  За свою философию он потом поплатился жизнью: его привлекли к суду и казнили именно за то что он слишком многое ставил под сомнение разлагал будто бы нравы и этим ослаблял государство. Почему Облака Потому что философы раньше всего стали задумываться из чего состоит все разнообразное множество предметов вокруг нас. Отцы и деды не задумывались и не рассуждали а смолоду твердо знали что такое хорошо и что такое плохо. Новые философы стали рассуждать и у них вроде бы получалось будто логикой можно доказать что хорошее не так...
23917. Гесиод 51.38 KB
  Отец Гесиода покинул изза жестокой нужды Малую Азию и поселился в Беотии около горы Муз Геликона Близ Геликона осел он в деревне нерадостной Аскре Тягостной летом зимою плохой никогда не приятной. От Гесиода сохранились две поэмы : Теогония Происхождение богов и Труды и дни Работы и дни. Поводом для написания поэмы Труды и дни послужил процесс Гесиода с братом Персом изза раздела земли после смерти отца.