strings c with examples
Интензивен поглед към основите на струните в C ++.
В тази серия C ++ досега обсъждахме предимно числови масиви в C ++. В този урок ще обсъдим манипулацията с масиви от символи, които просто наричаме „Strings“.
Символният масив е предимно низ в стил C, който C ++ поддържа. В допълнение към масивите от символи в стил C, C ++ поддържа и низов клас “std :: string”. Освен това в този урок ще обсъдим както типовете низове, така и разликата между тях и относно програмирането на всеки тип в C ++.
=> Внимавайте за пълния списък с уроци за C ++ в тази поредица.
Какво ще научите:
Масивни символи (низове в стил C)
Низът в стил c е масив от символи, завършен с нулев знак “ 0”. Следователно можем да дефинираме масив от тип char и размерите или размера на масивите и след това можем да го инициализираме в низ или масив от символи.
Имайте предвид, че това е компилаторът, който прекратява низ с нулев символ, така че ако инициализираме масива от символи със низ (в двойната кавичка “”), тогава трябва да оставим допълнително място за нулевия символ, докато декларираме размера на масив .
Нека вземем няколко примера за деклариране и инициализиране на масиви от знаци.
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
Всички горепосочени дефиниции са валидни дефиниции на низове в С ++ в C ++. Имайте предвид, че можем или да декларираме действителния размер, или да оставим размера празен, за да може компилаторът да побере размера в зависимост от низа, който инициализираме.
Нека вземем Пример на четене и писане на масив от знаци в C ++
По-долу е дадена проста програма, която чете низа с помощта на cin и го извежда с помощта на cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Изход 1:
SoftwareTestingHelp.com
сте въвели: SoftwareTestingHelp.com
Изход 2:
Това е низ в стил С
сте въвели: Това
Ако сравним и двата изхода, виждаме, че когато въведохме първия низ „SoftwareTestingHelp.com“, той беше отпечатан такъв, какъвто е.
Но във втория изход, въпреки че въведохме низа като „Това е низ в стил С“, изходът беше само „Това“.
Разликата в изхода е, защото „>>“ операторът на cin, който се използва за четене на низа, се третира като функция „scanf“ на C, която чете само до срещата. Следователно ‘cin with >>’ е подходящ за четене на масиви от символи без интервал.
безплатно приложение за часовник за компютър
Следователно, докато се срещна второто изходно пространство, функцията cin го взе като край на низа и прочете само първата дума.
За да прочете цял ред символи, включително интервалите, C ++ използва функцията „get“.
Примерна програма, използваща функцията get, е показана по-долу:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Изход:
Това е softwareTestinghelp.com
въведохте: Това е softwareTestinghelp.com
Както е показано в примера , функцията get на cin използва два аргумента. Първият аргумент е променливата на масива от символи, в която низът трябва да се прочете, докато вторият аргумент е максималният размер на масива.
Струните в стил C също поддържат множество функции на низове, които позволяват на потребителите да манипулират низовете. Тези функции са дефинирани в заглавката “cstring”.
Представяме таблица по-долу, в която са изброени различни низови функции, които могат да се използват за манипулиране на низове в стил C.
Не Функция Аргументи Описание един strcpy s1, s2 Копира низ s2 в низ s1 две strcat s1, s2 Добавя или свързва низ s2 в края на низ s1 3 strlen s1 Връща дължината на низ s1 4 strcmp s1, s2 Връща 0: s1 и s2 са еднакви
<0:s1 > 0: s1> s2 5 strchr s1, гл Връща указател към първото появяване на символ ch в низ s1и низът от там нататък 6 strstr s1, s2 Връща първото появяване на низ s2 в низ s1
Следващата програма показва използването на някои от тези функции в C ++:
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< Изход:
Дължина на първото място: 31
Резултант низ (secStr): тестване на софтуер
Сравняване на firstStr и secStr: -31
Обединен secStr: тестване за вас
Първата поява на i в firststr at: s е softwareTestingHelp.com
Низови клас в C ++
Низът в C ++, който се дефинира от класа “std :: string”, е представяне на потока от символи в обект. С други думи, класът String е колекция от низови обекти. Този низ клас е част от std пространството от имена и е дефиниран в заглавката „string.h“.
Нека обсъдим някои от основните разлики между низовия клас и масива от символи.
- Докато масивите от символи, които обсъдихме по-горе, се разпределят статично по време на компилацията, низовете са обекти и следователно могат да бъдат динамично разпределени.
- Тъй като масивите от символи имат статичен характер, те не могат да бъдат свивани или разширявани, след като бъдат дефинирани. Следователно, ако имаме символен масив с размер 100 и аз го инициализирах с думата „Здравейте“, тогава оставащото пространство се губи.
Char mystr (100) = „Здравейте“;
Тук останалите 95 места са пропилени.
Противно на това, обектите с низове са динамични по своята същност и ще заемат точното пространство за стойността.
- Масивните символи са по-бързи по производителност, докато низовете са по-бавни.
- Масивните символи имат няколко функции, работещи с тях, които могат да ги манипулират. String клас има множество функции, включително итератор функции.
Това са някои от основните разлики между символния масив и низовия клас обект.
След това ще видим няколко примера за низ клас заедно с някои основни операции, които се изпълняват върху обекти от низ клас.
Пример за деклариране и инициализиране на низовия клас.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<В горния пример декларирахме и инициализирахме низ обект, използвайки класа „низ“. Това е прост пример. Сега нека имаме програма за четене на низа от потребителя и също така да демонстрираме няколко функции на низа, включително намиране на дължината и сравняване на два низа.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Изход:
Въведете низа
SoftwareTestingHelp
Въведеният низ е: SoftwareTestingHelp
Дължината на низа str е: 19
Две струни са равни
Нов str1: SoftwareTestingHelp.com
str нова дължина: 0
В горната илюстрация използвахме множество функции за низ, за да манипулираме низовете. След декларирането на низа използваме функцията “getline” на низовия клас, за да прочетем низа от стандартния вход.
След като прочетем низа, намираме дължината му с помощта на функцията „дължина“. Ако трябва да сравним два низа, за да преценим дали са равни или не, тогава можем да използваме функцията „сравнение“ на низовия клас. Ако функцията връща 0, тогава двата низа са равни, в противен случай функцията връща ненулева стойност.
Още една функция е да добавите друг низ в края на съществуващия низ. Това е функцията „добавяне“. В този пример ние добавяме ‘.com’ към вече съществуващия низ str1 със стойност „софтуерно тестване“.
Последната функция в примера е функцията clear, която се използва за изчистване на съдържанието на извикващия обект низ. В този пример изчистваме съдържанието на обекта str, така че дължината му да стане 0.
Заключение
В този урок сме обхванали масива от символи, който също се нарича низове в стил С, заедно с основите на низовия клас. String класът се предлага с повече помощни програми като итератор, тъй като е клас на контейнер.
Ще видим повече за низовия клас и неговите функции в предстоящите ни уроци за STL !!
=> Посетете тук, за да видите серията C ++ за обучение за всички.
Препоръчително четене
- Сортиране на черупката в C ++ с примери
- Функции за дата и час в C ++ с примери
- Java String с String Buffer и String Builder Tutorial
- Сортиране на избора в C ++ с примери
- Функции на низовете на Python
- Урок за Python DateTime с примери
- Изрежете командата в Unix с примери
- 70+ НАЙ-ДОБРИ уроци за C ++, за да научите БЕЗПЛАТНО програмиране на C ++