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";


 

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

33093. Поняття буття 12.67 KB
  Проблема буття виникла в епоху античності як своєрідна відповідь на її нові потреби. Буття на його думку гарант надійності і незнищенності світу та раз і назавжди заведеного порядку в ньому. Не змінюється лише буття тобто абсолютна думка.
33094. Матерія та її розуміння 15.73 KB
  Досліджуючи фундамент матерії сучасна фізика відкрила всезагальне перетворення матеріальних об'єктів. Простір і час це атрибути тобто суттєві властивості рухомої матерії. Однак філософи ідеалісти заперечують залежність часу і простору від матерії. Кантом простір і час апріорні й абсолютно порожні форми чуттєвого споглядання речей внутрішньо і споконвічно притаманні людській свідомості.
33095. Рух матерії 12.92 KB
  Рух є способом існування матерії. Ніде і ніколи не було і не може бути матерії без руху як і руху без матерії. Рух матерії абсолютний і вічний. Такий стан руху матерії називається спокоєм.
33096. Простір та час як філософські категорії 12.45 KB
  Простір і час це атрибути тобто суттєві властивості рухомої матерії. Однак філософи ідеалісти заперечують залежність часу і простору від матерії. Кантом простір і час апріорні й абсолютно порожні форми чуттєвого споглядання речей внутрішньо і споконвічно притаманні людській свідомості.
33097. Проблема свідомості в філософії 13.7 KB
  Жодна наукова проблема не є предметом таких далеких від науки і таких широких за змістом інтелектуальних спекуляцій як проблема свідомості. Варте уваги те що з кожним кроком уперед у дослідженнях психіки і свідомості людини кількість такого роду спекуляцій не зменшується. Однак слід пам'ятати що лише наукове осягнення природи свідомості може відкрити істину.
33098. Суспільна свідомість 13.6 KB
  Виділяють буденну і теоретичну свідомості. В основу цього членування покладено відношення свідомості до практики ступінь її узагальнення глибина зв'язку з практичними основами життя. У свідомості виділяють два рівні ідеологію і суспільну психологію. Суспільна психологія є частиною буденної свідомості.
33099. Формы собственности в условиях рыночной экономики 38 KB
  Содержание собственности в экономической литературе в том числе и учебной рассматривается как правило в трех проявлениях: социальном экономическом и правовом. Социальноэкономическую сущность собственности экономисты определяют неоднозначно. В этом определении очевидным является тесное взаимодействие социальной и экономической сторон собственности.
33100. Хозяйственные ситуации (операции), их виды и классификация 39 KB
  Хозяйственные операции фиксируются отражаются в первичных документах и регистрируются в текущем учете. Определение во времени необходимо для того чтобы установить момент регистрации хозяйственной операции. Стоимостная оценка проводится по первичным документам подтверждающим факт осуществления хозяйственной операции.
33101. Центральный банк Российской Федерации 49 KB
  Банк России выполняя роль главного координирующего и регулирующего органа всей кредитной системы страны выступает органом экономического управления. Банк России контролирует деятельность кредитных организаций выдаёт и отзывает у них лицензии на осуществление банковских операций а уже кредитные организации работают с прочими юридическими и физическими лицами. Статус цели деятельности функции и полномочия Центрального банка Российской Федерации определяются Федеральным законом О Центральном банке Российской Федерации Банке России[3] и...