Paano hahatiin ang string sa C ++

How Split String C



Ang pagtatrabaho sa data ng string ay isang mahalagang bahagi ng anumang wika ng programa. Minsan kailangan nating hatiin ang data ng string para sa mga layunin sa pagprogram. Ang pag-andar ng split () ay umiiral sa maraming mga wika ng programa upang hatiin ang string sa maraming bahagi. Walang built-in na split () na pagpapaandar sa C ++ para sa paghahati ng string ngunit maraming maraming mga paraan ang umiiral sa C ++ upang gawin ang parehong gawain, tulad ng paggamit getline () pagpapaandar, strtok () pagpapaandar, gamit hanapin () at burahin () pagpapaandar, atbp Ang mga paggamit ng mga pagpapaandar na ito upang hatiin ang mga string sa C ++ ay naipaliwanag sa tutorial na ito.

Paunang kinakailangan

Bago suriin ang mga halimbawa ng tutorial na ito, kailangan mong suriin ang naka-install na g ++ compiler o wala sa system. Kung gumagamit ka ng Visual Studio Code, pagkatapos ay i-install ang mga kinakailangang extension upang maipon ang C ++ source code upang likhain ang maipapatupad na code. Dito, ang application ng Visual Studio Code ay ginamit upang makatipon at maipatupad ang C ++ code.







Hatiin ang string gamit ang pagpapaandar ng getline ()

Ang pagpapaandar ng getline () ay ginagamit upang basahin ang mga character mula sa isang string o isang nilalaman ng file hanggang sa makita ang isang partikular na delimiter o separator at iimbak ang bawat string ng parse sa isa pang variable ng string. Ang pagpapaandar ay magpapatuloy sa gawain hanggang sa ang buong nilalaman ng string o file ay na-parse. Ang syntax ng pagpapaandar na ito ay ibinibigay sa ibaba.



Syntax:



istream&getline(istream&ay, string&str,chardelim);

Dito, ang unang parameter, isstream, ay ang object mula sa kung saan ang mga character ay nakuha. Ang pangalawang parameter ay isang variable ng string na mag-iimbak ng nakuha na halaga. Ginamit ang pangatlong parameter upang maitakda ang delimiter na gagamitin para sa pagkuha ng string.





Lumikha ng isang C ++ file na may sumusunod na code upang hatiin ang isang string batay sa space delimiter gamit ang getline () pagpapaandar Ang isang halaga ng string ng maraming mga salita ay itinalaga sa isang variable, at ang puwang ay ginamit bilang naghihiwalay. Ang isang variable ng vector ay idineklara upang maiimbak ang mga nahango na salita. Susunod, ang loop na 'for' ay ginamit upang mai-print ang bawat halaga mula sa vector array.

// Isama ang mga kinakailangang aklatan
# isama
# isama
# isama
# isama

intpangunahing()
{
// Tukuyin ang data ng string na hahatiin
oras::lubidstrData= 'Alamin ang Programming C ++';
// Tukuyin ang data ng contant na gagana bilang delimiter
Const charnaghihiwalay= ';
// Tukuyin ang variable ng variable ng mga string
oras::vectoroutputArray;
// Bumuo ng isang stream mula sa string
oras::stringstreamstreamData(strData);
/ *
Ipahayag ang variable ng string na gagamitin
upang mag-imbak ng data pagkatapos ng split
* /

oras::lubidoras;
/ *
Ang loop ay uulitin ang pinaghiwalay na data at
ipasok ang data sa array
* /

habang (oras::getline(streamData, val, separator)) {
outputArray.push_back(oras);
}
// I-print ang pinaghiwalay na data
oras::gastos << 'Ang orihinal na string ay:' <<strData<<oras::endl;
// Basahin ang array at i-print ang pinaghiwalay na data
oras::gastos << ' nAng mga halaga pagkatapos hatiin ang string batay sa espasyo: ' <<oras::endl;
para sa (awtomatiko &oras:outputArray) {
oras::gastos <<oras<<oras::endl;
}
bumalik ka 0;
}

Output:



Ang sumusunod na output ay lilitaw pagkatapos ipatupad ang code sa itaas.

Hatiin ang string gamit ang strtok () function

Maaaring magamit ang pagpapaandar ng strtok () upang hatiin ang isang string sa pamamagitan ng pagbibigay ng token sa bahagi ng string batay sa isang delimiter. Ibinabalik nito ang isang pointer sa susunod na token kung mayroon ito; kung hindi man, nagbabalik ito ng isang halaga ng NULL. Ang tali.h header file ay kinakailangan upang magamit ang pagpapaandar na ito. Ang isang loop ay mangangailangan ng pagbabasa ng lahat ng mga pinaghiwalay na halaga mula sa string. Ang unang argument ay naglalaman ng halaga ng string na mai-parse, at ang pangalawang argument ay naglalaman ng delimiter na gagamitin upang makabuo ng token. Ang syntax ng pagpapaandar na ito ay ibinibigay sa ibaba.

Syntax:

char * strtok ( char *str,Const char *mga delimiter);

Lumikha ng isang C ++ file na may sumusunod na code upang hatiin ang isang string sa pamamagitan ng paggamit ng strtok () na function. Ang isang hanay ng mga character ay tinukoy sa code na naglalaman ng isang colon (‘:’) bilang ang separator. Susunod, ang strtok () Ang pagpapaandar ay tinatawag na may halaga ng string at ang delimiter upang makabuo ng unang token. Ang ‘ habang Ang loop ay tinukoy upang makabuo ng iba pang mga token at mga halaga ng token hanggang sa WALA ang halaga ay natagpuan.

// Isama ang mga kinakailangang aklatan
# isama
# isama

intpangunahing()
{
// Ideklara ang isang hanay ng mga character
charstrArray[] = 'Mehrab Hossain: IT Professional: [protektado ng email]: +8801726783423';
// Ibalik ang unang halaga ng token batay sa ':'
char *tokenValue= strtok(strArray,':');
// Initialize the counter variable
intcounter= 1;
/ *
Iterate ang loop upang mai-print ang halaga ng token
at hatiin ang natitirang data ng string upang makuha
ang susunod na halaga ng token
* /

habang (tokenValue!= WALA)
{
kung(counter== 1)
printf('Pangalan:% s n', tokenValue);
iba pa kung(counter== 2)
printf('Trabaho:% s n', tokenValue);
iba pa kung(counter== 3)
printf('Email:% s n', tokenValue);
iba pa
printf('Mobile No.:% s n', tokenValue);
tokenValue= strtok(WALA,':');
counter++;
}
bumalik ka 0;
}

Output:

Ang sumusunod na output ay lilitaw pagkatapos ipatupad ang code sa itaas.

Hatiin ang string gamit ang mga find () at burahin ang () function

Ang string ay maaaring hatiin sa C ++ sa pamamagitan ng paggamit ng mga hanapin () at burahin ang () mga pagpapaandar. Lumikha ng isang C ++ file na may sumusunod na code upang suriin ang mga gamit ng find () at burahin ang () mga function upang hatiin ang isang halaga ng string batay sa isang partikular na delimiter. Ang halaga ng token ay nabuo sa pamamagitan ng paghahanap ng posisyon ng delimiter sa pamamagitan ng paggamit ng paghahanap na () function, at ang halaga ng token ay maiimbak pagkatapos alisin ang delimiter sa pamamagitan ng paggamit ng burahin () na pagpapaandar. Ang gawain na ito ay uulit-ulitin hanggang ang buong nilalaman ng string ay na-parse. Susunod, ang mga halaga ng hanay ng vector ay mai-print.

// Isama ang mga kinakailangang aklatan
# isama
# isama
# isama

intpangunahing(){
// Tukuyin ang string
oras::lubidstringData= 'Bangladesh at Japan at Germany at Brazil';
// Tukuyin ang separator
oras::lubidnaghihiwalay= 'at';
// Ideklara ang variable ng vector
oras::vectorbansa{};
// Declare integer variable
intposisyon;
// Declare string variable
oras::lubidoutstr, token;

/ *
Hatiin ang string gamit ang pagpapaandar ng substr ()
at pagdaragdag ng pinaghiwalay na salita sa vector
* /

habang ((posisyon=stringData.hanapin(naghihiwalay)) !=oras::lubid::npos) {
token=stringData.substr(0, posisyon);
// Tanggalin ang sobrang puwang mula sa harap ng pinaghiwalay na string
bansapush_back(tokenburahin(0, token.hanapin ang_first_not_of(')));
stringData.burahin(0, posisyon+naghihiwalayhaba());
}
// I-print ang lahat ng hating salita maliban sa huling isa
para sa (Const awtomatiko &paglabas:bansa) {
oras::gastos <<paglabas<<oras::endl;
}
// I-print ang huling hating salita
oras::gastos <<stringData.burahin(0, stringData.hanapin ang_first_not_of(')) <<oras::endl;
bumalik ka 0;
}

Output:

Ang sumusunod na output ay lilitaw pagkatapos ipatupad ang code sa itaas.

Konklusyon

Tatlong magkakaibang paraan upang hatiin ang isang string sa C ++ ay naipaliwanag sa tutorial na ito sa pamamagitan ng paggamit ng mga simpleng halimbawa upang matulungan ang mga bagong gumagamit ng sawa na maisagawa ang split operation nang madali sa C ++.