C ++ simləri


SimBaxılıb 808

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

C ++ proqramımızda strings yaratmaq və istifadə etmək üçün üç əsas yolu təqdim edir:

  1. Bir sıra char elementlərindən istifadə
  2. Istifadə string sinif
  3. Istifadə wchar_t geniş simvollar üçün

Çarxlar seriyası

Simli simvol ardıcıllığıdır. char məlumat növü C ++ dilində tək bir simvolu təmsil etmək üçün istifadə olunur. Beləliklə, proqramınızda bir simli istifadə etmək istəyirsinizsə, bir sıra simvollardan istifadə edə bilərsiniz. Bir sıra işarələr istifadə edərək sətrin bəyannaməsi və tərifi, hər hansı digər məlumat tipli bir sıra bəyanatına və tərifinə bənzəyir:

//define an array of chars with 10 elements
char msg[10] = { 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\0' };

Hər hansı bir sətir '\ 0' sona çatan sıfır işarəsi ilə bitir. Bu şəkildə bir sıra tərifi son element olaraq '\ 0' sıfır işarəsini daxil etməlidir. Yuxarıda bir massivin tutumu 10-dur, ancaq ondan yalnız 8-ni istifadə etdik. Bir massivin qalan iki işarəsi təyin olunmayacaq.

Aşağıda göstərildiyi kimi bir sıra dinamik uzunluqlu simvollar elan etmək və müəyyən etmək üçün başqa bir yol:

char msg2[] = { 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\0' };

Yuxarıda halda ayrılmış yaddaşın miqdarı simvolların ardıcıllığını saxlamaq üçün lazım olduğu qədər olacaqdır.

Bir sıra simvolları işə salmağın ən sadə yolu, aşağıda göstərildiyi kimi ikiqat tırnak işarələrində sətir hərfi istifadə etməkdir:

char msg3[] = "Message";

Funksiyalarından istifadə edərək char massivlərində bəzi əsas əməliyyatları həyata keçirə bilərsiniz ip kimi kitabxana:

Bir simli digərinə kopyalayın

strcpy_s(destination, source)

Aşağıda istifadə demosu verilmişdir strcpy_s
char msg[10] = { 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\0' };
char dest[20];
strcpy_s(dest, msg);
cout << "String copied from msg = " << dest << endl;

Yuxarıdakı nümunənin nəticəsi aşağıda göstərilmişdir

String msg = MESSAGE-dən kopyalandı

Bir simli digərinə birləşdirin

strcat_s(string1, string2)

string2, string1-in sonuna əlavə ediləcəkdir
//declare 2 messages
char string1[20] = "Good";
char string2[] = " Morning";
//concatenate strings
strcat_s(string1, string2);
cout << string1 << endl;

Proqramın yuxarıdakı çıxışı belə olacaq:

Sabahınız xeyir

Qeyd: String1 ilə birləşdirmək üçün string2-də kifayət qədər boş yeriniz olmalıdır.

Sətrin uzunluğunu əldə edin

strlen(string)

cout << "Length of the string 2 is " << strlen(string2) << endl;

Yuxarıdakı kodun çıxışı olacaqdır

Sətrin uzunluğu 2-dir

Simli: “Səhər” 7 simvolda və 8-də saxlanılırth simvol sıfır simvoldur - '\ 0'

İki simli müqayisə edin

strcmp(string1, string2)

Bu funksiya geri dönəcəkdir 0, iplər bərabərdirsə; mənfi string1 olduqda dəyər az string2 və müsbət string1 olduqda dəyər böyük string2-dən.
//declare two strings
char str1[100];
char str2[100];
//get user input of strings:
cout << "Please enter the first string\n";
cin >> str1;
cout << "Please enter the second string\n";
cin >> str2;
//compare strings
int result = strcmp(str1, str2);
if (result == 0)
{
	//strings are equals
	cout << str1 << " is equal to " << str2 << endl;
}
else
{
	if (result > 0)//str1 is greater
		cout << str1 << " is greater than " << str2 << endl;
	else//str2 is greater
		cout << str1 << " is less than " << str2 << endl;
}

Aşağıda yuxarıdakı proqramın nəticəsidir


Xahiş edirəm ilk simli daxil edin
abc
Xahiş edirəm ikinci simli daxil edin
abd
abc abd-dən azdır

strcmp simləri leksikoqrafiya (əlifba) sırası ilə müqayisə edir. Simlər üçün "az", "pişik" in "it" dən az olduğu deməkdir, çünki "pişik" əlifba sırası ilə "it" dən əvvəl gəlir.

Simli sinif

Standart C ++ Kitabxanası tərəfindən verilən bir sinifdən istifadə edərək simləri təmsil etməyin başqa bir yolu. Bu sinfə ad verilib string və C ++ dakı char massivlərindən daha çox funksionallığa malikdir. Proqramlarınızda “simli” sinifindən istifadə etmək sizə daha çox imkanlar təklif edir. Proqramınızdakı simlərdən istifadə etmək üçün aşağıdakılar daxil edilməlidir:

#include <string>

Bu başlıq sənədini əlavə etdikdən sonra proqramınızda simli obyektlərdən istifadə edə biləcəksiniz. Bir sətri elan etmək və tərif etmək nümunəsi:
string s1 = "Have a";
string s2 = " nice day";

İlə iş sim sinif çox asandır.

Birləşdirən simlər

Sətirləri birləşdirmək üçün artı işarəsini istifadə edin:

string s3 = s1 + s2;
cout << s3 << endl;

Aşağıda yuxarıdakı kodun çıxışı verilmişdir

Bir gözəl gün

Sətrin uzunluğu

Bir sətrin uzunluğunu əldə etmək üçün, məsələn, “s3”, aşağıdakı funksiyadan istifadə edə bilərsiniz

s3.length()

Simli uzunluğu əldə etmək nümunəsi
cout << "Length of s3 is " << s3.length() << endl;

Aşağıda yuxarıdakı kodun çıxışı verilmişdir

S3 uzunluğu 15-dir

Bir simli digərinə köçürün

Bir simli digərinə kopyalamaq üçün təyinat operatorundan istifadə etmək kifayətdir

string s4 = s2;
cout << s4 << endl;

Aşağıda kodun üstündəki çıxış os verilir

gözəl gün

Sətri daimi simvol massivinə çevirin

Bəzən bir simli obyektin daimi char massivinə çevrilməsi faydalıdır. Bunu istifadə edərək edə bilərsiniz c_str() aşağıda göstərildiyi kimi fəaliyyət göstərir

const char* cstr = s3.c_str();

Stringin boş olub olmadığını yoxlayın

Siz istifadə edə bilərsiniz empty() sətrin boş olub olmadığını müəyyənləşdirən sətir funksiyası. Bir sətir boşdursa, işləyin boş () geri dönəcək true əksinə false

Aşağıda istifadə qaydaları göstərilmişdir empty()

if (s4.empty())
	cout << "s4 is empty" << endl;
else
	cout << s4 << endl;

String sinfi proqramçı üçün simləri idarə etmək üçün bir çox imkan verir, lakin indi yalnız əsas şeyləri müzakirə edirik. Növbəti mövzularda simli sinif haqqında daha çox məlumat verəcəyik.

Geniş characher wchar_t

Geniş xarakter wchar_t sadə xarakterli məlumat tipindən daha böyük bir ölçüyə malik bir məlumat tipidir. Bu məlumat növü “2 və ya 4” bayt tutur. Bu tip, simli təmsil etmək üçün genişləndirilmiş simvol dəstlərindən istifadə etmək imkanı verir. Əsasən wchar_t məlumat növü Çin, Yapon kimi beynəlxalq dillərdən istifadə edildikdə istifadə olunur. C ++ təmsil etmək üçün daxili məlumat növü təmin edir wchar_t geniş simvollar.

Geniş xarakter dəyişəninin bəyannaməsi aşağıdakı şəkildə edilə bilər:

wchar_t wideString;

Bir sıra geniş simvollardan istifadə etmək üçün aşağıda göstərildiyi kimi bir sıra wchar_t elan etməlisiniz:
wchar_t wideString[100];

İlə işləmək wchar_t daxil etməlisiniz wchar aşağıda göstərildiyi kimi proqramdakı kitabxana:
#include <wchar.h>

Wchar kitabxanası geniş simvollarla işləmək üçün fərqli funksiyalar və sabitlər təklif edir. İçəridə bir neçə sabit var wchar kitabxana:

  • NULL - Sıfır göstərici sabitini təmsil edir.
  • WCHAR_MAX - whcar_t maksimum dəyərini təmsil edir
  • WCHAR_MIN - wchar_t minimum dəyərini təmsil edir.
  • WEOF - Faylın sonunu göstərmək üçün istifadə olunur.

Geniş bir simli simli bir dəyər təyin etmək üçün istifadə etməlisiniz swprintffunksiyası:

int swprintf (wchar_t*  destinationString, size_t length, const wchar_t* formatString, ...);

Burada parametrlər:

  • Hedef Sətri - Biçimli məlumatları saxlayacaq geniş simvollar. Bir sıra wchar_t və ya geniş bir simvol ola bilər.
  • Uzunluq - Yazılan simvolların sayı. Sıranın sonunda sıfır simvol üçün sətrin uzunluğunu bir artırmağı unutmayın.
  • Format String - Formata uyğun məlumat yazmaq üçün istifadə olunan simli.
  • … - Format sətri ilə istifadə ediləcək parametrlər.

Uğura çatdıqda, bu funksiyanın qaytarma dəyəri yazılan simvol sayındadır.

Aşağıda bir nümunə var

swprintf(wideString, 6, L"HELLO");

Yuxarıda, format sətri sadə bir sətirdir və "HELLO" -dan əvvəl "L" işarəsi sətri a-ya çevirmək üçün istifadə olunur const wchar_t*

Növbəti nümunə format sətirinin format müəyyənləşdiriciləri ilə necə istifadə olunacağını göstərir:

swprintf(myMessage, 13, L"My age is %d ", 20);

Yuxarıdakı vəziyyətdə myMessage dəyişən “Mənim yaşım 20-dir".

Bəzi format göstəricilərinin siyahısı aşağıdakı cədvəldə təmsil olunur:

 Göstərici növü
 d, i Onluq və ya tam. Arqument bir tam dəyərdir
 U İmzasız tam ədəd
 O Səkkiz ədəd
 x, X Onaltılıq tam ədədi
 F Üzən nöqtə dəyəri
 E Elmi üzən nöqtə
 c Obraz
 s Sim
 n İnt üçün göstərici

Geniş simvolları çap etmək üçün istifadə etməliyik wpritnf funksiyası:

int wprintf (const wchar_t* formatString, ...);

wprintf göstərilən formatla standart çıxışa geniş simvollar yazır. Məsələn, yuxarıdakı kodda istifadə olunan iki geniş simli sətrin dəyərini aşağıdakı kimi çap edə bilərik
wprintf(wideString);
wprintf(myMessage);

Standart çıxışa geniş simvol yazmaq üçün istifadə edə bilərsiniz wcout istifadə etdiyiniz kimi eyni şəkildə obyekt cout məlumat çıxarmaq üçün.
wcout << "Use of wcout " << wideString << endl;

Konsoldan geniş bir xarakter oxumaq üçün istifadə etməlisiniz wcin yerinə cin
wchar_t name[50];
cout << "Enter your name" << endl;
wcin >> name;
cout << endl << "Your name is ";
wprintf(L"%s", name);

 

Crack Sistemi Dizayn Müsahibələri
Translate »