Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функции для работы со строками

 

  1. Функции копирования strcpy() и strncpy()

strcpy(y,x) – копирует строку x в y, включая завершающий нулевой символ.

strncpy(z,x,n) – копирует не более чем n символов массива x в z. Если строка х длиной меньше, чем n, то в z дописывается нулевой символ столько раз, сколько нужно, чтобы общее количество скопированных символов равнялось n.

 

 

#include <iostream>

#include<string.h> // заголовочный файл для обработки строк

using namespace std;

int main(){

char x[]="C++ in samples and tasks";

char y[50],z[15];

cout<<"stroka x: "<<x<<endl;

cout<<"stroka y: "<<strcpy(y,x)<<endl;

strncpy(z,x,14);

z[14]='\0';

cout<<"stroka z: "<<z<<endl;

system("pause");

return 0;

}

 

 

  1. Функции объединениястрок strcat() и strncat()

strcat(s1,s2) –добавление копии строки s2, включая завершающий нулевой символ, в конец строки s1. Начальный символ строки s2 записывается поверх нулевого символа в конец строки s1. Строка, определенная первым аргументом, должна иметь достаточно пространства, чтобы вместить обе строки после их объединения.

strncat(s1,s2,n) – добавление не более чем n символов массива s2 в конец строки s1.

 

int main(){

char s1[50]="C++ -";

char s2[]= "a general-purpose language!";

char s3[50]=" ";

char *s4(" and C#");

cout<<"s1= "<<s1<<endl;

cout<<"s2= "<<s2<<endl;

strcat(s1,s2);

cout<<s1<<endl;

cout<<"strncat(s3,s1,12)"<<strncat(s3,s1,12)<<endl;

cout<<strcat(s1,s4)<<endl;

//cout<<"strcat(s3,s1)"<<strcat(s3,s1)<<endl;

system("pause");

return 0;

}

 

  1. Функции сравнения строк strcmp(), strcnmp(), strcnicmp(), stricmp()

Функция strcmp возвращает 0, если строки равны, отрицательное значение, если первая строка меньше, чем вторая, и положительноезначение, если первая строка больше, чем вторая. Функция strcnmp предназначена для сравнения только первых n символов двух строк. Функции strcnicmp, stricmp предназначены для сравнения строк без учета регистра.

#include <iostream>

#include<string>

using namespace std;

int main(){

char s1[ ]="111";

char s2[]= "11111";

char *s3("2222");

char *s4("2222");

cout<<strcmp(s1,s2)<<endl;

cout<<strcmp(s3,s4)<<endl;

system("pause");

return 0;

}

  1. Функция strtok() для разбиения строки на лексемы (отдельные слова)

Пояснение к примеру: функция strtok() возвращает из s1 лексему, отделенную разделителем. s2- указатель, ссылающийся на следующий символ, начиная с которого должен осуществляться поиск следующей лексемы. Каждый последующий вызов функции с нулевым указателем в качестве значения первого аргументапродолжает поиск лексем, начиная с того места в строке, на которое указывает возвращаемое в результате последнего вызова значение указателя. Функция возвращает нулевой указатель, если лексемы не обнаружены.

#include <iostream>

#include<string>

using namespace std;

int main(){

char s1[ ]="111;2222;33333 444444.";

char *s2;

s2=strtok(s1,";.");

while (s2!=NULL)

{

cout<<s2<<endl;

s2=strtok(NULL,";.");

}

system("pause");

return 0;

}

  1. Функция strlen() возврата длины строки

#include <iostream>

#include<string>

using namespace std;

int main(){

char *s1("0123456789");

char s3[]="9876543210";

cout<<s1<<endl<<strlen(s1)<<endl;

cout<<s3<<endl<<strlen(s3)<<endl;

system("pause");

return 0;

}

  1. Функция strstr() поиска подстроки в строке

Функция strstr() возвращает указатель на позицию в первом аргументе подстроки, указанной вторым аргументом.

#include <iostream>

#include<string>

using namespace std;

int main(){

char *s1("0123252789");

char *s2("2");

char *s3= strstr(s1,s2);

if(!s3)

cout<<s2<<endl<<"net"<<"v"<<s1<<endl;

else

cout<<"1-aj pozicia "<<s2<<" v "<<s1<<" - "<<s3-s1<<endl;

system("pause");

return 0;

}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...