89787

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

Лекция

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

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

Русский

2015-05-13

63.73 KB

12 чел.

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

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


 

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

15036. Жүсіп Баласағұн шығармаларының Қазақ ақындарымен сабақтастығы 56.5 KB
  Жүсіп Баласағұнның және ХІХХХ ғасыр басындағы қазақ әдебиеті өкілдерінің шығармашылығындағы замана бейнесі Түркі әлеміне есімі мәшһүр болып қайта өрлеу дәуірінің аса көрнекті ақыны данышпанойшылы Жүсіп Баласағұн өнегелі ойтолғамдарын өзінің Құтадғу білік
15037. Жыр жампозы - Жамбыл 47 KB
  ӘОЖ 801: 894.342 ЖЫР ЖАМПОЗЫ К.Ж. Демеш Жамбыл облысы әкімияты Тараз қ. Қашанда халық арасынан өнерімен елді сүйсіндірген адамдар шығып отырған. Олар елді қиынқыстау шағында қиыншылықтан шығуға қол ұшын берумен қатар рухани тірегі бола білді. Ел мақтанышына айна
15038. Жырау мен жыршылдық дәстүрдің Қазақ әдебиетіндегі қалыптасуы 52.5 KB
  ӘОЖ 378.147:8.0 ЖЫРАУ МЕН ЖЫРШЫЛЫҚ ДӘСТҮРДІҢ ҚАЗАҚ ӘДЕБИЕТІНДЕГІ ҚАЛЫПТАСУЫ А.Мұқашева Г.Мейірбекова Тараз мемлекеттік педагогикалық институты Тараз қ. Тарих қашан да өз перзенттерінің құнды мұраларымен қымбат әрі барлық кезеңдердің сарапшысы.Ерлігі м...
15039. Зар заман ақындарының (Дулат, Шортанбай, Мұрат) шығармаларындағы идеялық ерекшеліктер 42.5 KB
  ӘОЖ 323 001 574 ХІХ ҒАСЫРДЫҢ ІІ ЖАРТЫСЫНДАҒЫ ҚАЗАҚ ӘДЕБИЕТІНДЕГІ ЗАР ЗАМАН ӨКІЛДЕРІ Қ.С. Қожабекова Тараз мемлекеттік педагогикалық институты Тараз қ. Қазақ әдебиетіндегі байырлық рух ХVІІІ ғасырда жоңғарлар мен қарсы күресте ХІХ ұлт азаттық күресте Мах...
15040. Ілияс Есенберлиннің тарихи романдары 63 KB
  ІЛИЯС ЕСЕНБЕРЛИН 1915-1983 Ілияс Есенберлин 1915 жылы Ақмола облысындағы Атбасар қаласында туған. 1940 жылы Қазақ таукен институтын бітірген. Ұлы Отан соғысына қатысқан. Соғыстан кейінгі жылдарда филармонияны Жазушы баспасын басқарады т.б. жұмыстар атқарады. Жазушы ...
15041. Ілияс Жансүгіровтің Жетісу суреттері өлеңін оқытудағы ерекшеліктер 48.5 KB
  Ілияс Жансүгіровтің Жетісу суреттері өлеңін оқытудағы ерекшеліктер немесе қазақ поэзиясындағы ұлы жаңалық Б.О.Есімбекова Алматы қаласы Ілияс Жансүгіров Жетісу губерниясының Қапал уезі Ақсу болысы 4ауылында 1894 жылы 14 мамырда дүниеге келген. Анасынан 4
15042. Ілияс Жансүгіровтың Күйші поэмасы 48 KB
  Ілияс Жансүгіровтың Күйші поэмасы Қазақ поэзиясында бүгінге дейін өнер жайында көп жазған және көркемдіктің шыңына жеткізе жазған І.Жансүгіров пен теңдесер қаламгер жоқ. Сонау 20жылдардың бас кезінде өмірге келген Әнші өлеңінен басталған бұл тақырып тек қазақ әде
15043. Кел, жастар, біз бір түрлі жол табалық 113.02 KB
  Кел жастар біз бір түрлі жол табалық.... Шәкәрім Шаһкәрім Құдайбердіұлы өмірі мен шығармашылығын өз бетімен ізденіске бағыттап қосымша материалдарды пайдалану арқылы оқыту тәжірибесінен Көмекші оқуәдістемелік құрал Шаһкәрім Шәкәрім Құдайбердіұлы ө...
15044. Кітапханашылар байқауы 95 KB
  Шығыс Қазақстан облыстық балалар және жасөспірімдер кітапханасы ММ Ұымдастырушылық әдістемлік бөлім Өскемен қ. 2007 Оқысаң ұшасың Пауло Коэльо Құрметті оқырмандар Балаларға оқу бақытын сыйлайық байқауына ...