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


 

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

7227. Маркетинговые исследования рынка импортных косметических средств по уходу за кожей 260.8 KB
  Маркетинговые исследования рынка импортных косметических средств по уходу за кожей Введение Косметика в переводе с греческого - искусство украшать. Косметика зародилась одновременно с появлением человека. Ее история тесно связана с уровнем ...
7228. Выбор и расчет рациональных способов восстановления деталей на примере толкателя клапанов тракторного двигателя 370.5 KB
  Выбор и расчет рациональных способов восстановления деталей на примере толкателя клапанов тракторного двигателя Задание Необходимо выбрать оптимальный способ восстановления детали с подробным описанием операций, расчетом времени и себестоимости...
7229. Инвестиционный проект модернизации ОАО Рыбинские моторы 209 KB
  Инвестиционный проект модернизации ОАО Рыбинские моторы В данном курсовом проекте все три фазы рассмотрены в первой части. Во второй части проекта произведен расчет наиболее выгодного источника получения денежных средств для осуществления данного пр...
7230. Разработка проекта рациональной организации поточной линии на производстве 169.62 KB
  Введение. Задачей любого предприятия является повышение качества производимой продукции или услуги при минимальных затратах на производство, поэтому тема Организация поточного производства очень актуальна, в ней я рассматриваю вопросы оптимального...
7231. Конструкция и материал оптических волокон 453 KB
  Конструкция и материал оптических волокон. Оптические волокна можно разделить на следующие типы: кварцевые, кварц-полимерные и полимерные. Кварцевые оптические волокна изготавливаются из высокочистого кварцевого стекла (сердечник и светоотражающая о...
7232. Расчет напряжений в молитных и бандажированных штампах 443 KB
  Теория обработки металлов давлением Расчет напряжений в молитных и бандажированных штампах. Исходные данные: Диаметр поковки: 115 мм Высота поковки: 90 мм Марка стали поковки: Сталь 50 Истинный предел текучести: МПа Размеры монолитного штампа....
7233. Организация работы участка по ремонту топливной аппаратуры на АТП в г. Ростове на Дону 298 KB
  Введение Перевозки автомобильным транспортом предполагают использование подвижного состава (автомобилей и автопоездов), находящегося в исправном техническом состоянии. Исправное техническое состояние означает полное соответствие подвижного состава н...
7234. Статистические оценки параметров распределения. Точечные и интервальные оценки параметров распределения 56 KB
  Статистические оценки параметров распределения Пусть требуется изучить количественный признак некоторой совокупности. Построив вариационный ряд и изобразив его графически, можно получить первоначальное представление о виде распределения....
7235. Статистическая проверка статистических гипотез 68 KB
  Лекция 3. Статистическая проверка статистических гипотез. Часто необходимо знать закон распределения генеральной совокупности. Если закон распределения неизвестен, но имеются основания предположить, что он имеет определенный вид, то выдвигают гипоте...