සී ++ නූල්



String

C ++ අපගේ වැඩසටහනේ නූල් සෑදීමට සහ භාවිතා කිරීමට මූලික ක්‍රම තුනක් සපයයි:

  1. වරහන් මූලද්රව්ය භාවිතා කිරීම
  2. භාවිතා කරමින් string පන්තිය
  3. භාවිතා කරමින් wchar_t පුළුල් අක්ෂර සඳහා

අක්ෂර මාලාව

නූල් යනු අක්ෂර මාලාවකි. char C ++ හි එක් අක්ෂරයක් නිරූපණය කිරීමට දත්ත වර්ගය භාවිතා කරයි. එබැවින් ඔබේ වැඩසටහනේ නූලක් භාවිතා කිරීමට අවශ්‍ය නම් ඔබට අක්ෂර මාලාවක් භාවිතා කළ හැකිය. අක්ෂර මාලාවක් භාවිතා කරමින් නූල ප්‍රකාශ කිරීම සහ අර්ථ දැක්වීම වෙනත් ඕනෑම දත්ත වර්ගයක අරාව ප්‍රකාශ කිරීම හා අර්ථ දැක්වීම හා සමාන වේ:

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

ඕනෑම නූලක් අවසන් වන්නේ '\ 0' යන ශුන්‍ය අක්‍ෂරයකින් ය. අරා අර්ථ දැක්වීමකට අවසාන අංගය ලෙස '\ 0' යන ශුන්‍ය අක්‍ෂරය ඇතුළත් විය යුතුය. ඉහත අවස්ථාවෙහිදී අරාවෙහි ධාරිතාව 10 ක් වන නමුත් අපි භාවිතා කර ඇත්තේ එයින් 8 ක් පමණි. අරාවෙහි ඉතිරි අක්ෂර දෙක නිර්වචනය නොකෙරේ.

පහත දැක්වෙන පරිදි ගතික දිග අක්ෂර මාලාවක් ප්‍රකාශ කිරීමට හා අර්ථ දැක්වීමට තවත් ක්‍රමයක්:

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

ඉහත අවස්ථාවෙහිදී, අනුපිළිවෙල ගබඩා කිරීම සඳහා වෙන් කළ මතකයේ ප්‍රමාණය හරියටම සමාන වේ.

අක්ෂර මාලාවක් ආරම්භ කිරීම සඳහා ඇති සරලම ක්‍රමය නම් පහත දැක්වෙන පරිදි ද්විත්ව උපුටා දැක්වීම්වල වචනාර්ථයෙන් වචන භාවිතා කිරීමයි:

char msg3[] = "Message";

සිට ශ්‍රිත භාවිතා කරමින් වර්‍ග අරා මත ඔබට මූලික මෙහෙයුම් කිහිපයක් කළ හැකිය cstring වැනි පුස්තකාලය:

එක් නූලක් තවත් නූලකට පිටපත් කරන්න

strcpy_s(destination, source)

පහත දැක්වෙන්නේ භාවිතා කිරීමේ නිරූපණයයි 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;

ඉහත උදාහරණයේ ප්‍රතිදානය පහත දැක්වේ

නූල් msg = MESSAGE වෙතින් පිටපත් කරන ලදි

එක් නූලක් තවත් නූලකට සම්බන්ධ කරන්න

strcat_s(string1, string2)

string2 හි කෙළවරට එකතු කරනු ලැබේ
//declare 2 messages
char string1[20] = "Good";
char string2[] = " Morning";
//concatenate strings
strcat_s(string1, string2);
cout << string1 << endl;

ඉහත වැඩසටහනේ ප්‍රතිදානය වනුයේ:

සුභ උදෑසනක්

සටහන: එය string1 සමඟ සංයුක්ත කිරීමට ඔබට string2 හි ප්‍රමාණවත් ඉඩ ප්‍රමාණයක් තිබිය යුතුය.

නූල් වල දිග ලබා ගන්න

strlen(string)

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

ඉහත කේතයේ ප්‍රතිදානය වනු ඇත

නූල් 2 හි දිග 8 කි

නූල්: “උදය” අක්ෂර 7 කින් සහ 8 කින් ගබඩා කර ඇතth අක්ෂරය ශුන්‍ය අක්‍ෂරයකි - '\ 0'

නූල් දෙකක් සසඳා බලන්න

strcmp(string1, string2)

මෙම ශ්‍රිතය නැවත පැමිණේ 0, නූල් සමාන නම්; සෘණ අගය, string1 නම් අඩු string2 සහ ධනාත්මක string1 නම් අගය වැඩි string2 ට වඩා.
//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;
}

පහත දැක්වෙන්නේ ඉහත වැඩසටහනේ ප්‍රතිදානයයි


කරුණාකර පළමු නූල ඇතුළත් කරන්න
ඒබීසී
කරුණාකර දෙවන නූල ඇතුළත් කරන්න
අබ්බාස්
abc abd ට වඩා අඩුය

strcmp ශබ්දකෝෂ (අකාරාදී) අනුපිළිවෙලින් නූල් සංසන්දනය කරයි. නූල් සඳහා “වඩා අඩු” යන්නෙන් අදහස් කරන්නේ “බළලා” “බල්ලා” ට වඩා අඩු නිසා “බළලා” අකාරාදී පිළිවෙලට “බල්ලා” ට පෙර එන බවයි.

සංගීත පන්තිය

සම්මත C ++ පුස්තකාලය මඟින් සපයනු ලබන පන්තියක් භාවිතා කරමින් නූල් නියෝජනය කිරීමට තවත් ක්‍රමයක්. මෙම පන්තිය නම් කර ඇත string එය C ++ හි වර්‍ග අරා වලට වඩා බොහෝ ක්‍රියාකාරීත්වයක් ඇත. ඔබේ වැඩසටහන් වල “නූල්” පන්තිය භාවිතා කිරීමෙන් ඔබට වැඩි හැකියාවන් ලැබේ. ඔබේ වැඩසටහනේ නූල් භාවිතා කිරීම සඳහා පහත සඳහන් ප්‍රකාශ ඇතුළත් කළ යුතුය:

#include <string>

මෙම ශීර්ෂ ගොනුව ඇතුළත් කිරීමෙන් පසු ඔබේ වැඩසටහනේ නූල් වස්තු භාවිතා කිරීමට ඔබට හැකි වේ. නූලක් ප්‍රකාශ කිරීම සහ අර්ථ දැක්වීම පිළිබඳ උදාහරණ මෙන්න:
string s1 = "Have a";
string s2 = " nice day";

සමඟ වැඩ පේළියකි පන්තිය ඉතා පහසුය.

කොන්ක්‍රීට් නූල්

නූල් සමඟ සම්බන්ධ වීමට ප්ලස් ලකුණ භාවිතා කරන්න:

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

පහත දැක්වෙන්නේ ඉහත කේතයේ ප්‍රතිදානයයි

සුභ දිනයක් වේවා

නූලක දිග

නූලක දිග ලබා ගැනීම සඳහා, උදාහරණයක් ලෙස, “s3”, ඔබට පහත ශ්‍රිතය භාවිතා කළ හැකිය

s3.length()

නූල් දිග ලබා ගැනීමේ උදාහරණය
cout << "Length of s3 is " << s3.length() << endl;

පහත දැක්වෙන්නේ ඉහත කේතයේ ප්‍රතිදානයයි

S3 හි දිග 15 කි

එක් නූලක් තවත් නූලකට පිටපත් කරන්න

එක් නූලක් තවත් නූලකට පිටපත් කිරීමට පැවරුම් ක්‍රියාකරු භාවිතා කරන්න

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

පහත දැක්වෙන්නේ කේතයට ඉහළින් ඇති ප්‍රතිදානයයි

සුභ දවසක්

නූල් නියත අක්ෂර අරාව බවට පරිවර්තනය කරන්න

සමහර විට නූල් වස්තුවක් නිරන්තර වර්‍ග අරා බවට පරිවර්තනය කිරීම ප්‍රයෝජනවත් වේ. භාවිතා කිරීමෙන් ඔබට මෙය කළ හැකිය c_str() පහත දැක්වෙන පරිදි ක්‍රියා කරන්න

const char* cstr = s3.c_str();

නූල් හිස්ද නැද්ද යන්න පරීක්ෂා කරන්න

ඔබ භාවිතා කළ හැකිය empty() නූල හිස්ද නැද්ද යන්න තීරණය කිරීම සඳහා නූල් වල ක්‍රියාකාරිත්වය. නූලක් හිස් නම්, ක්‍රියා කරන්න හිස් () නැවත පැමිණේ true එසේ නොවේ false

පහත දැක්වෙන්නේ භාවිතා කරන ආකාරය දැක්වෙන කේතයයි empty()

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

සංගීත පන්තියට ක්‍රමලේඛකයාට නූල් හැසිරවීමට බොහෝ හැකියාවන් සපයයි, නමුත් අපි දැන් සාකච්ඡා කරන්නේ මූලික කරුණු පමණි. අපි ඊළඟ මාතෘකා වල සංගීත පන්තිය ගැන වැඩි විස්තර ආවරණය කරන්නෙමු.

පුළුල් චරිතය wchar_t

පුළුල් චරිතය wchar_t සරල අක්ෂර දත්ත වර්ගයට වඩා විශාල ප්‍රමාණයක් ඇති දත්ත වර්ගයකි. මෙම දත්ත සමුදාය “බයිට් 2 ක් හෝ 4 ක්” ගනී. මෙම වර්ගය නූල් නිරූපණය කිරීම සඳහා දීර් character අක්ෂර කට්ටල භාවිතා කිරීමේ හැකියාව සපයයි. චීන, ජපන් වැනි ජාත්‍යන්තර භාෂාවන් භාවිතා කරන විට බොහෝ විට wchar_t දත්ත සමුදාය භාවිතා වේ. C ++ නිරූපණය කිරීම සඳහා දත්ත වර්ග වලින් සාදා ඇත wchar_t පුළුල් අක්ෂර.

පුළුල් අක්ෂර විචල්‍යය ප්‍රකාශ කිරීම පහත පරිදි කළ හැකිය:

wchar_t wideString;

පුළුල් අක්ෂර මාලාවක් භාවිතා කිරීම සඳහා පහත දැක්වෙන පරිදි wchar_t පෙළක් ප්‍රකාශ කළ යුතුය:
wchar_t wideString[100];

සමඟ වැඩ කිරීමට wchar_t ඔබ ඇතුළත් කළ යුතු වර්ගය wchar පහත දැක්වෙන පරිදි ඔබේ වැඩසටහනේ පුස්තකාලය:
#include <wchar.h>

Wchar පුස්තකාලය පුළුල් අක්ෂර සමඟ වැඩ කිරීම සඳහා විවිධ කාර්යයන් සහ නියතයන් ඉදිරිපත් කරයි. නියතයන් කිහිපයක් ඇත wchar පුස්තකාලය:
  • NULL - ශුන්‍ය දර්ශක නියතය නියෝජනය කරයි.
  • WCHAR_MAX - whcar_t හි උපරිම අගය නියෝජනය කරයි
  • WCHAR_MIN - wchar_t හි අවම අගය නියෝජනය කරයි.
  • WEOF - ගොනුවේ අවසානය දැක්වීමට නිරන්තරයෙන් භාවිතා වේ.

පුළුල් අක්ෂර මාලාවකට අගයක් පැවරීම සඳහා ඔබ භාවිතා කළ යුතුය swprintfශ්රිතය:

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

මෙන්න පරාමිතීන්:
  • ගමනාන්ත නූල් - ආකෘතිගත දත්ත රඳවා තබන පුළුල් අක්ෂර. එය wchar_t පෙළක් හෝ තනි පුළුල් අක්ෂරයක් විය හැකිය.
  • දිග - අක්ෂර ගණන ලියා ඇත. නූල් අවසානයේ ශුන්‍ය අක්‍ෂර සඳහා නූල් වල දිග එකකින් වැඩි කිරීමට ඔබ මතක තබා ගත යුතුය.
  • ආකෘති නූල් - ආකෘතියට අනුව දත්ත ලිවීමට භාවිතා කරන නූල්.
  • … - ආකෘති මාලාව සමඟ භාවිතා කළ යුතු පරාමිතීන්.

සාර්ථක වූ විට මෙම ශ්‍රිතයේ ප්‍රතිලාභ අගය වන්නේ ලියා ඇති අක්ෂර ගණනයි.

පහත දැක්වෙන්නේ උදාහරණයක්

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

ඉහත අවස්ථාවෙහිදී, ආකෘති නූල් සරල නූලක් වන අතර “හෙලෝ” ට පෙර “එල්” අක්ෂරය නූල් a බවට පරිවර්තනය කිරීමට භාවිතා කරයි const wchar_t*

ඊළඟ උදාහරණයෙන් දැක්වෙන්නේ ආකෘති පිරිවිතර සමඟ ආකෘති නූල් භාවිතා කරන්නේ කෙසේද යන්නයි:

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

ඉහත නඩුවේ myMessage විචල්‍යයේ “මගේ වයස අවුරුදු 20 යි".

සමහර ආකෘති පිරිවිතරයන්ගේ ලැයිස්තුව පහත වගුවේ දැක්වේ:

 පිරිවිතරවර්ගය
 ඩී, අයිදශම හෝ පූර්ණ සංඛ්‍යා. තර්කය පූර්ණ සංඛ්‍යා අගයකි
 Uඅත්සන් නොකළ පූර්ණ සංඛ්‍යාවක්
 Oඔක්ටල් නිඛිලය
 x, X.හෙක්සැඩිසිමල් නිඛිලය
 Fපාවෙන ලක්ෂ්‍ය අගය
 Eවිද්‍යාත්මක පාවෙන ස්ථානය
 cඅක්ෂර
 sString
 nInt වෙත දර්ශකය

පුළුල් අක්ෂර මුද්‍රණය කිරීම සඳහා අප භාවිතා කළ යුතුය wpritnf ශ්රිතය:

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

wprintf නිශ්චිත ආකෘතිය සමඟ සම්මත ප්‍රතිදානයට පුළුල් අක්ෂර ලියයි. උදාහරණයක් ලෙස, ඉහත කේතයේ භාවිතා කර ඇති පුළුල් අක්ෂර නූල් දෙකක වටිනාකම පහත පරිදි මුද්‍රණය කළ හැකිය
wprintf(wideString);
wprintf(myMessage);

ඔබට භාවිතා කළ හැකි සම්මත ප්‍රතිදානයට පුළුල් අක්ෂර ලිවීමට wcout ඔබ භාවිතා කළ ආකාරයටම වස්තුව cout දත්ත ප්‍රතිදානය කිරීමට.
wcout << "Use of wcout " << wideString << endl;

කොන්සෝලය වෙතින් පුළුල් අක්‍ෂරයක් කියවීමට ඔබ භාවිතා කළ යුතුය wcin වෙනුවට cin
wchar_t name[50];
cout << "Enter your name" << endl;
wcin >> name;
cout << endl << "Your name is ";
wprintf(L"%s", name);