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


 

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

7883. Тактичні проблеми доказування 36.5 KB
  Тактичні проблеми доказування. Тактичні прийоми роботи з доказами. Фактор раптовості, його врахування і використання в доказуванні. Перш ніж розглядати саме тактичні прийоми роботи з доказами, слід зупинитись на співвідношенні процесуального й такти...
7884. Школа и общественное дошкольное воспитание в период восстановления и дальнейшего развития народного хозяйства СССР (1946—1958 гг.) 126.5 KB
  Школа и общественное дошкольное воспитание в период восстановления и дальнейшего развития народного хозяйства СССР (1946 гг.) Еще в ходе Великой Отечественной войны Коммунистическая партия и Советское правительство принимали меры по восста...
7885. Проверочные тесты по темам Педагогика как наука, Теория обучения 87.5 KB
  Проверочные тесты по темам Педагогика как наука, Теория обучения Тест 1 Задание. Выберите наиболее точное определение объекта педагогической науки: Ученик Учитель Образование Ребенок Развивающаяся личность Задание...
7886. Основы государства и права (коспект) 467.5 KB
  Основы государства и права (коспект) Введение В условиях развития рыночных отношений в экономике возросли требования к правовой подготовке специалистов. Соответственно от высшей школы требуют формирование широкого кругозора и правовой культуры...
7887. Основы термодинамики. Молекулярная физика 166 KB
  Основы термодинамики Молекулярная физика и термодинамика занимаются явлениями, обусловленными совокупным действием огромного числа непрерывно движущихся частиц. Несмотря на то, что каждая частица движется по законам механики, их совокупное движение ...
7888. Поняття про форму організації навчання 28.5 KB
  Поняття про форму організації навчання Відповідь на питання Як навчати? виводить нас на ще одну важливу категорію педагогіки - категорію форм організації навчання. Якщо поняття метод характеризує змістову або внутрішню сторону навчального процесу ...
7889. З історії розвитку організаційних форм навчання 23.57 KB
  З історії розвитку організаційних форм навчання Загальні форми організації навчання часто називають організаційними системами навчання. У різні періоди розвитку суспільства перевага надавалася тим чи іншим організаційним системам навчання. Найстаршо...
7890. Класно-урочна система навчання, її суть та історія розвитку 19.33 KB
  Класно-урочна система навчання, її суть та історія розвитку Класно-урочна система навчання - це така організація навчального процесу, при якій учні групуються по класах і основною формою навчання є урок. Зміст навчання в кожному класі визначаєт...
7891. Причини, привід та початок Першої світової війни 35.5 KB
  Тема уроку. Причини, привід та початок Першої світової війни. Мета: розкрити причини, привід та початок Першої світової війни розвивати аналітичні вміння при вивченні всесвітньої історії виховувати в учнів зацікавленість до новітнього періоду всес...