Как да разделя низ в 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&е, низ&str,charделим);

Тук първият параметър, е поток, е обектът, от който ще бъдат извлечени знаците. Вторият параметър е низова променлива, която ще съхранява извлечената стойност. Третият параметър се използва за задаване на разделител, който ще се използва за извличане на низ.





Създайте C ++ файл със следния код, за да разделите низ въз основа на разделителя на пространството с помощта на getline () функция. Стойност на низ от няколко думи е присвоена на променлива и интервалът е използван като разделител. Обявена е векторна променлива за съхраняване на извлечените думи. След това цикълът „for“ е използвал за отпечатване на всяка стойност от векторния масив.

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

intглавен()
{
// Определете низови данни, които ще бъдат разделени
часа::низstrData= „Научете програмиране на C ++“;
// Дефинирайте постоянни данни, които ще работят като разделител
const charразделител= '';
// Определете променливата на динамичния масив на низове
часа::векторoutputArray;
// Конструиране на поток от низ
часа::stringstreamstreamData(strData);
/ *
Декларирайте низова променлива, която ще се използва
за съхраняване на данни след разделяне
* /

часа::низчас;
/ *
Цикълът ще повтори разделените данни и
вмъкнете данните в масива
* /

докато (часа::getline(streamData, val, разделител)) {
outputArray.избутвам(час);
}
// Отпечатайте разделените данни
часа::цена << „Оригиналният низ е:“ <<strData<<часа::endl;
// Прочетете масива и отпечатайте разделените данни
часа::цена << 'нСтойностите след разделяне на низа въз основа на интервал: ' <<часа::endl;
за (Автоматичен &час:outputArray) {
часа::цена <<час<<часа::endl;
}
връщане 0;
}

Изход:



Следният изход ще се появи след изпълнение на горния код.

Разделяне на низ чрез функцията strtok ()

Функцията strtok () може да се използва за разделяне на низ чрез токенизиране на частта от низа въз основа на разделител. Той връща показалец към следващия знак, ако съществува; в противен случай връща стойност NULL. The низ.h заглавен файл е необходим за използване на тази функция. Цикълът ще изисква четене на всички разделени стойности от низ. Първият аргумент съдържа стойността на низ, която ще бъде анализирана, а вторият аргумент съдържа разделителя, който ще се използва за генериране на маркера. Синтаксисът на тази функция е даден по -долу.

Синтаксис:

char * strtok ( char *str,const char *разделители);

Създайте C ++ файл със следния код, за да разделите низ, като използвате функцията strtok (). Масив от знаци е дефиниран в кода, съдържащ двоеточие (‘:’) като разделител. След това, strtok () функция се извиква със стойността на низа и разделителя за генериране на първия знак. „ докато 'Цикълът е дефиниран за генериране на другите символи и стойностите на маркера до НУЛА стойността е намерена.

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

intглавен()
{
// Декларира масив от знаци
charstrArray[] = „Mehrab Hossain: IT специалист: [защитен имейл]: +8801726783423“;
// Връща първата стойност на символа въз основа на ':'
char *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позиция;
// Деклариране на променлива на низ
часа::низизпъвам, жетон;

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

докато ((позиция=stringData.намирам(разделител)) !=часа::низ::npos) {
жетон=stringData.подстр(0, позиция);
// Премахване на допълнителното пространство от предната част на разделения низ
страна.избутвам(жетон.изтрива(0, жетон.find_first_not_of('')));
stringData.изтрива(0, позиция+разделител.дължина());
}
// Отпечатайте всички разделени думи, с изключение на последната
за (const Автоматичен &излизам:страна) {
часа::цена <<излизам<<часа::endl;
}
// Отпечатайте последната разделена дума
часа::цена <<stringData.изтрива(0, stringData.find_first_not_of('')) <<часа::endl;
връщане 0;
}

Изход:

Следният изход ще се появи след изпълнение на горния код.

Заключение

Три различни начина за разделяне на низ в C ++ са обяснени в този урок, като се използват прости примери, за да се помогне на новите потребители на python да изпълняват операцията на разделяне лесно в C ++.