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:
Mündəricat
Ç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ərikwprintf(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);
