Функции копирования строки
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++:
Пример программы меняем символы в строке наоборот — в обратном порядке
#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; }
Результат работы программы: