Строки в языке С++

Преобразование чисел в строку и наоборот


#include <iostream>        // stoi(stol, stoll)
using namespace std;
int main(){
    string str = "12";          // "12"
    int i = stoi(str);          // string to int
    long L = stol(str);         // string to long
    long long LL = stoll(str);  // string to long long
    float f = stof("3.14f");    // string to float
    double d = stod("3.14");    // string to double
    str = to_string(23);        // int to string
    str = to_string(3.14f);     // float to string
    str = to_string(3.14);      // double to string
}

Сравнение строк

Сравнение "Сишных" строк (указатель на массив char оканчивающихся нулевым символом - значение 0)


int strcmp(str1, str2); // Возвращает 0 если строки равны , если не равны, то возвращает 1 или -1 в зависимости от того больше или меньше первый не совпавший символ в строке str1 и строке str2.

char buf[100] = "Hi Victor";      // Строка для сравнения
cout << strcmp(buf, "Hi Victor"); //0 Строки равны
cout << strcmp(buf, "Hi");        //1 Строки не равны (разная длина, разное содержимое)  
cout << strcmp(buf, "Victor");    //-1 Строки не равны (разная длина, разное содержимое) V > H

Сравнение std::string делается встроенным в класс методом compare(). А также можно просто использовать операторы == или !=.


string str = "Hi Victor";           // Строка для сравнения
cout << str.compare("Hi Victor");   //0  Строки равны
cout << str.compare("Hi");          //7  Строки не равны
cout << str.compare("Victor");      //-1 Строки не равны
if(str == "Hi Victor"){             // Можно сравнивать std::string операторами == и !=
	cout << "OK";                   //OK
}

Поиск подстроки

Встроенная в класс std::string функция find находит и возвращает индекс (size_t) первого вхождения подстроки в строку или string::npos если вхождение не найдено


string str = "Hi Victor";        // Строка в которой будем искать подстроку
cout << str.find("Hi Victor");   //0
cout << str.find("Hi");          //0
cout << str.find("Victor");      //3
cout << str.find("Gektor");      //18446744073709551615 == string::npos

size_t res = str.find("Gektor"); // Корректный поиск string::npos
if(res == string::npos){         // Положение строки равно "не нейдено"?
	cout << "\nNot found";
}
2023-10-23



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Строки в языке С++. Преобразование типов в строку и обратно, поиск строк и подстрок.