Сводка по использованию строк
В процессе чистки вопросов автор обнаружил, что некоторые грамматики легко забыть, поэтому в этой серии заметок по чистке вопросов мы хотим записать некоторые общие грамматики для удобства просмотра и закрепления Содержание этой серии обновляется синхронно в соответствии с ход вопросов.
1. Строка
1. Заголовочный файл
#include <string>
2. Создание и инициализация строки
string str;//定义字符串变量
string str1 = "hello";//定义字符串变量同时赋初值
str = str1;//把str1复制给str
string str2(3, 'a');//创建一个包含n个元素的字符串,每个元素初始化为指定元素,输出结果为“aaa”
string str3("value");//定义字符串变量同时赋初值
string str4(str3);//把str3赋值给str4
3. Операции чтения и записи строк
(1) Используйте cin, чтобы прочитать значение, введенное с клавиатуры
Строковый объект будет автоматически игнорировать пробелы в начале (как пробелы, новые строки, табуляции и т. д.), так и начинать чтение с первого реального символа и заканчивать при встрече с «пробелом», «TAB» и «возвратом каретки».
string str;//定义字符串变量
cin >> str; //使用cin对字符串进行赋值
cout << str << endl;//使用cout输出字符串
(2) Используйте getline() для чтения строки
Формат функции getline: getline(cin, string object)
Функция getline заключается в чтении всей строки и прекращении чтения до тех пор, пока не встретится символ новой строки, во время которого он может читать пустые символы, такие как пробелы и табуляции.
string str1;
getline(cin, str1);//读取一行为str1赋值
cout << str1 << endl;
Примечание. Функция getline, как и cin, также возвращает параметр потока, который равен cin, поэтому вы можете использовать getline для чтения строки в цикле.
string str1;
while(getline(cin, str1))//循环读取一行为str1赋值
cout << str1 << endl;
4. Операция конкатенации строк
Объединяет строку str2 с концом строки str1. C++ совместим с функцией strcat() языка C.
string str1 = "Hello";
string str2 = "world";
strcat(str1,str2);//C语言中使用strcat()对字符串进行拼接
str2=str1+str2;//C++中使用“+”号对字符串进行拼接
str2+=str1;相当于str2 = str2 + str1
str1.append(str2);//把str2加到str1后面
При добавлении строковых объектов и символьных или строковых литералов необходимо убедиться, что операнды по обе стороны от знака + имеют хотя бы одну строку.
string str3 = str1 + ','+ str2+ '\n';//string对象与字符相加
5. Операции сравнения строк
Строки можно сравнивать с помощью операторов сравнения, compare() или функции strcmp(s1, s2) на языке C. Строки не равны, пока в определенной строке есть неравный символ или еще один символ.
(1) Операторы сравнения (>, <, ==)
if(str1 > str2)
cout << str1 << "大于" << endl;
else if(str1 < str2)
cout << str1 << "小于" << endl;
else
cout << str1 << "等于" << endl;
(2) сравнить()
Функция-член compare() в строковом объекте может сравнивать строки.
Если str=указанная строка, str.compare() возвращает 0
Если str> указанная строка, str.compare() возвращает положительное число
Если str<заданная строка, str.compare() возвращает отрицательное число
int ret = str1.compare(str2);//比较str1和str2
(3) стркмп(стр1,стр2)
Функция strcmp(str1, str2) сравнивает две строки по значению кода ASCII; функция strcmp(str1, str2) сначала вычитает значение первого символа строки str1 из первого символа строки str2, если разница равна нулю, продолжить сравнение, если разница не равна нулю, вернуть разницу.
Если str1 и sttr2 совпадают, вернуть 0;
если str1<str2, вернуть значение меньше 0
; если str1>str2, вернуть значение больше 0
int ret = strcmp(str1, str2);
6. Получить длину строки
Для строковых объектов str.length() и str.size() являются синонимами и возвращают длину символов в строке, исключая '/0'.
Кроме того, функция size() также может получить длину векторного типа.
int len1 = str.size();//获取字符串的长度
int len2 = str.length();//获取字符串的长度
7. Получить подстроку
string s = str.substr(n,m);//从str的第n个字符开始取m个字符
8. Получить символ в строке
char ch1 = str[n];//获取字符串str中的第n个字符
char ch2 = str.at(n);//获取字符串str中的第n个字符