Библиотека STL String C++

Функции копирования строки

char* strcpy(char* to, const char* from); // копирование строки из массива from в second
char* strncpy (char* to, const char* from, size_t n); // копирование строки из массива from в second с заданным размером
void* memmove ( void* to, const void* from, size_t n); // копирования блока памяти из одного места в другое
void* memcpy (void * to, const void * from, size_t n); // копирования блока памяти из одного места в другое
Функции сцепления
char* strcat (char* to, const char * from); // присоединить (сцепить) с массивом to значения из from
char* strncat (char* to, const char* from, size_t n); // добавление символов из массива from (в том числе null символа) c указанием размерности


Функции сравнения

int memcmp(const void* first, const void* second, size_t n); // массив first сравнивается с массивом second (меньше, больше, равно)
int strcmp(const char* first, const char * second); // сравнение строки first c second на равенство
int strcoll(const char* first, const char* second); // массив first сравнивается с массивом second (меньше, больше, равно)
int strncmp( const char* first, const char* second, size_t n); // сравнение строки first c second до n
size_t strxfrm(char* to, const char* from, size_t n); //преобразует символы строки from в текущую локаль и помещает их в to


Функции поиска

void* memchr (void* str, int sim, size_t n); // поиск символа при первом вхождении в заданном количестве символов
char* strchr (char* str, int sim); // поиск первого вхождения символа в строку
size_t strcspn(const char* first, const char* second); // вычисляет длину числа символов до первого вхождения символа, присутствующего в обеих строках
char* strpbrk (char* first, const char* second); // находит первый символ в строке first, который соответствует любому символу, указанному в second (исключает окончание нулевых символов)
char* strrchr (char* str, int sim); // находит последнее вхождение символа в строке
size_t strspn (const char* first, const char* second); // возвращает длину начальной подстроки строки, на которую указывает first, которая состоит только из тех символов, которые содержатся в строке, на которую указывает second
char* strstr(char * first, const char* second); // находит первое вхождение подстроки second в строке first, функция останавливается на нулевом символе
char* strtok(char* to, const char* from); // разбиения строки разделителем


Дополнительные функции

void* memset(void* ptr, int sim, size_t n); // заполнение блока памяти значениями
char* strerror (int errnum); // выводит ошибку No such file or directory, если файл отсутствует
size_t strlen(const char* str); // возвращает размер массива символов


#include "stdafx.h"
#include <cstring>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
char str1[]="Line string";
char str2[12];
char str3[12];
char str4[12];
char str5[30];
char str6[30]="New string ";
char str7[30];
int n, m, k, res, len, size_str;
char buffer1[] = "abc";
char buffer2[] = "abcdeklms";
char str_a[] = "a b c";
char str_b[] = "a b c";

char str_sim[] = "search for a character in a string";
char sim='i';
char* simvol;

char st_1[] = "fsrt";
char st_2[] = "457577798";

char str_tem[]="first-of-second";
char str_tem1[]="CCC";

char* p, * ptr, *p_b, * p_del;

strcpy(str2, str1);
cout<<str2<<endl;
strncpy(str3,str2,4); // or sizeof(str3)
str3[4] = '\0';
cout<<str3<<endl;
memmove(str4, str1, sizeof(str1));
cout<<str4<<endl;
memcpy(str5, str1, sizeof(str1));
cout<<str5<<endl;
cout<<strcat(str5," concatenate")<<endl; // сцепить
cout<<strncat(str6, str5, 5)<<endl; n=memcmp(buffer1, buffer2, sizeof(buffer1)); if (n>0)
{
cout<<"First>Second"<<endl;
}
else if (n<0)
{
cout<<"First<Second"<<endl;
}
else
{
cout<<"First=Second"<<endl;
}

m=strcmp(str_a, str_b);
if (m==0)
{
cout<<"equal"<<endl;
}
else
{
cout<<"not equal"<<endl; } k=strcoll(buffer1, buffer2); if (k>0)
{
cout<<"First>Second"<<endl;
}
else if (k<0)
{
cout<<"First<Second"<<endl;
}
else
{
cout<<"First=Second"<<endl;
}

res=strncmp(buffer1, buffer2, 3);
if (res == 0) {
cout<<"First=Second"<<endl; } else if (res > 0)
{
cout<<"First>Second"<<endl;
}
else
{
cout<<"First<Second"<<endl;
}

len=strxfrm(str7, str1, 20);
cout<<len<<endl;

if (memchr(str_sim, sim, 30))
{
cout<<sim<<" Yes"<<endl;
}
else
{
cout<<sim<<" No"<<endl;
}

simvol = strchr(str_sim, 'i');
cout<<simvol-str_sim+1<<endl;

size_str=strcspn(st_1, st_2);
cout<<size_str+1<<endl;

p=strpbrk(buffer1, buffer2);
if (p != 0)
{
cout<<p<<" Yes"<<endl;
}
else
{
cout<<p<<" No"<<endl;
}

ptr=strrchr(str_sim, sim);
if(ptr)
{
cout<<ptr-str_sim+1<<" Yes"<<endl;
}
else
{
cout<<str_sim<<" No"<<endl;
}

int len_str=strspn("string value","string");
cout<<len_str<<endl;

p_b = strstr(buffer2, "klm");
if(p_b)
{
cout<<p_b<<" Yes"<<endl;
}
else
{
cout<<p_b<<" No"<<endl;
}

p_del=strtok(str_tem, "-");
while (p_del!=NULL)
{
cout<<p_del<<endl;
p_del=strtok(NULL, "-");
}

memset(str_tem1,'+',2);
cout<<str_tem1<<endl;

FILE * pFile;
pFile=fopen("text.txt","r");
if (pFile == NULL)
{
cout<<strerror(errno)<<endl;
}

cout<<strlen(str_tem1)<<endl;

system("pause");
return 0;
}

Результат работы программы cstring на C++:

Библиотека STL String C++

Пример программы меняем символы в строке наоборот — в обратном порядке

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    string str = "Reverse reverse";
    string str1 = "               ";

    reverse(str.begin(), str.end());
    cout << str << endl;

    int i,j;
    for (i =0, j= str.length() - 1; i <= str.length() - 1, j>=0; ++i,--j)
    {
        str1[j]=str[i];
    }
    cout << str1 << endl;

    system("pause");
    return 0;
}

Результат работы программы:

886

Leave a Reply

Ваш адрес email не будет опубликован.