Как разбить строку в C ++

How Split String C



Работа со строковыми данными - неотъемлемая часть любого языка программирования. Иногда нам нужно разделить строковые данные для целей программирования. Функция split () существует во многих языках программирования для разделения строки на несколько частей. В C ++ нет встроенной функции split () для разделения строки, но в C ++ существует множество способов выполнения одной и той же задачи, например, использование getline () функция strtok () функция, используя найти() а также стереть() функции и т. д. Использование этих функций для разделения строк в C ++ было объяснено в этом руководстве.

Обязательное условие

Прежде чем проверять примеры этого руководства, вы должны проверить, установлен ли компилятор g ++ в системе. Если вы используете Visual Studio Code, установите необходимые расширения для компиляции исходного кода C ++ и создания исполняемого кода. Здесь приложение Visual Studio Code было использовано для компиляции и выполнения кода C ++.







Разделить строку с помощью функции getline ()

Функция getline () используется для чтения символов из строки или содержимого файла до тех пор, пока не будет найден конкретный разделитель или разделитель, и сохранить каждую строку синтаксического анализа в другой строковой переменной. Функция будет продолжать выполнение задачи до тех пор, пока не будет проанализировано все содержимое строки или файла. Синтаксис этой функции приведен ниже.



Синтаксис:



istream&Getline(istream&есть, строка&ул,символdelim);

Здесь первый параметр, isstream это объект, из которого будут извлечены символы. Второй параметр - это строковая переменная, в которой будет храниться извлеченное значение. Третий параметр используется для установки разделителя, который будет использоваться для извлечения строки.





Создайте файл C ++ со следующим кодом, чтобы разделить строку на основе разделителя пробелов, используя getline () функция. Строковое значение из нескольких слов было присвоено переменной, а в качестве разделителя использовался пробел. Объявлена ​​векторная переменная для хранения извлеченных слов. Затем цикл for использовался для печати каждого значения из векторного массива.

// Включаем необходимые библиотеки
#включают
#включают
#включают
#включают

intглавный()
{
// Определяем строковые данные, которые будут разделены
часы::нитьstrDataзнак равно «Изучите программирование на C ++»;
// Определяем непрерывные данные, которые будут работать как разделители
const символразделительзнак равно '';
// Определение переменной динамического массива строк
часы::векторoutputArray;
// Создаем поток из строки
часы::струнный потокstreamData(strData);
/ *
Объявить строковую переменную, которая будет использоваться
хранить данные после разделения
* /

часы::нитьчасы;
/ *
Цикл будет перебирать разделенные данные и
вставить данные в массив
* /

в то время как (часы::Getline(streamData, val, разделитель)) {
outputArray.отталкивать(часы);
}
// Распечатываем разделенные данные
часы::Стоимость << 'Исходная строка:' <<strData<<часы::конец;
// Считываем массив и распечатываем разделенные данные
часы::Стоимость << ' пЗначения после разделения строки по пробелу: ' <<часы::конец;
для (авто &часы:outputArray) {
часы::Стоимость <<часы<<часы::конец;
}
возвращение 0;
}

Выход:



Следующий вывод появится после выполнения вышеуказанного кода.

Разделить строку с помощью функции strtok ()

Функцию strtok () можно использовать для разделения строки путем токенизации части строки на основе разделителя. Он возвращает указатель на следующий токен, если он существует; в противном случае возвращается значение NULL. В string.h Заголовочный файл необходим для использования этой функции. Цикл потребует чтения всех разделенных значений из строки. Первый аргумент содержит строковое значение, которое будет проанализировано, а второй аргумент содержит разделитель, который будет использоваться для генерации токена. Синтаксис этой функции приведен ниже.

Синтаксис:

символ * strtok ( символ *ул,const символ *разделители);

Создайте файл C ++ со следующим кодом для разделения строки с помощью функции strtok (). В коде определен массив символов, содержащий двоеточие (‘:’) в качестве разделителя. Далее strtok () функция вызывается со строковым значением и разделителем для генерации первого токена. ‘ в то время как ’Цикл определен для генерации других токенов и значений токенов до тех пор, пока НУЛЕВОЙ значение найдено.

// Включаем необходимые библиотеки
#включают
#включают

intглавный()
{
// Объявить массив символов
символstrArray[] знак равно «Мехраб Хоссейн: ИТ-специалист: [адрес электронной почты]: +8801726783423»;
// Возвращаем значение первого токена на основе ':'
символ *tokenValueзнак равно strtok(strArray,':');
// Инициализируем переменную счетчика
intприлавокзнак равно 1;
/ *
Итерируйте цикл, чтобы распечатать значение токена
и разделите оставшиеся строковые данные, чтобы получить
следующее значение токена
* /

в то время как (tokenValue!знак равно НУЛЕВОЙ)
{
если(прилавок== 1)
printf('Имя:% s п', tokenValue);
еще если(прилавок== 2)
printf('Род занятий:% s п', tokenValue);
еще если(прилавок== 3)
printf(Электронная почта:% s п', tokenValue);
еще
printf(Мобильный №:% s п', tokenValue);
tokenValueзнак равно strtok(НУЛЕВОЙ,':');
прилавок++;
}
возвращение 0;
}

Выход:

Следующий вывод появится после выполнения вышеуказанного кода.

Разделить строку с помощью функций find () и erase ()

Строку можно разделить в C ++ с помощью функций find () и erase (). Создайте файл C ++ со следующим кодом, чтобы проверить использование функций find () и erase () для разделения строкового значения на основе определенного разделителя. Значение токена генерируется путем нахождения позиции разделителя с помощью функции find (), а значение токена будет сохранено после удаления разделителя с помощью функции erase (). Эта задача будет повторяться до тех пор, пока не будет проанализировано все содержимое строки. Далее будут напечатаны значения векторного массива.

// Включаем необходимые библиотеки
#включают
#включают
#включают

intглавный(){
// Определяем строку
часы::нитьstringDataзнак равно 'Бангладеш и Япония, а также Германия и Бразилия';
// Определяем разделитель
часы::нитьразделительзнак равно 'а также';
// Объявить векторную переменную
часы::векторстрана{};
// Объявить целочисленную переменную
intпозиция;
// Объявить строковую переменную
часы::нитьoutstr, токен;

/ *
Разделите строку с помощью функции substr ()
и добавляем разделенное слово в вектор
* /

в то время как ((позициязнак равноstringData.найти(разделитель)) !знак равночасы::нить::нпо) {
жетонзнак равноstringData.substr(0, позиция);
// Удаляем лишний пробел перед разделенной строкой
страна.отталкивать(токен.стереть(0, токен.find_first_not_of('')));
stringData.стереть(0, позиция+разделитель.длина());
}
// Вывести все разделенное слово, кроме последнего
для (const авто &Outstr:страна) {
часы::Стоимость <<Outstr<<часы::конец;
}
// Выводим последнее разделенное слово
часы::Стоимость <<stringData.стереть(0, строкаДанные.find_first_not_of('')) <<часы::конец;
возвращение 0;
}

Выход:

Следующий вывод появится после выполнения вышеуказанного кода.

Заключение

В этом руководстве были объяснены три различных способа разделения строки на C ++ с использованием простых примеров, чтобы помочь новым пользователям Python легко выполнять операцию разделения на C ++.