تبلیغات
برنامه نویسی C++ - آموزش و سورس برنامه ی سی پلاس پلاس - مطالب ابر رشته ها
برترین پیشنهاد

برنامه نویسی C++ - آموزش و سورس برنامه ی سی پلاس پلاس

بزرگترین پایگاه آموزش سی پلاس پلاس و سورس تمام برنامه های آن

توابع جستجوی یک زیر رشته در رشته هایی از نوع string:

در تمامی موارد زیر فرض کنید str رشته ای از نوع string است که بصورت زیر تعریف شده است:
string str;
//end


تابع find: این تابع جهت یافتن یک زیر رشته در یک رشته از نوع string به کار می رود. این تابع بصورت کلی زیر بکار می رود:
;(نقطه شروع جستجو ,زیر رشته مورد جستجو)int pos = str.find


عملکرد این تابع به این صورت است که اگر زیر رشته داده شده به عنوان ورودی تابع در رشته ی str یافت شود، موقعیت آن در رشته str و در غیر این صورت عدد -1 برمیگرداند.

تابع rfind: این تابع از نظر به کار گیری دقیقا مشابه تابع find است با این تفاوت که عمل جستجو را از نقطه شروع به طور معکوس (به سمت ابتدا رشته) انجام میدهد.

تابع find_first_of: این تابع رشته را به جهت یافتن اولین موقعیتی که یک کاراکتر از عناصر یک مجموعه کاراکتری وجود داشته باشد، مورد جستجو قرار می دهد و بصورت کلی زیر بکار می رود:

;(نقطه شروع جستجو ,یک مجموعه کاراکتر بصورت رشته)int pos = str.find_first_of


تابع find_first_not_of: این تابع همانند تابع find_first_of عمل کرده با این تفاوت که رشته را به جهت یافتن اولین کاراکتری که داخل یک مجموعه از کاراکتر ها نباشد، مورد جستجو قرار میدهد. در صورت یافته شدن چنین کاراکتری در رشته، موقعیت کاراکتر را در رشته بصورت یک عدد int باز میگرداند و در غیر این صورت مقدار -1 را برمیگرداند.

تابع find_last_of و find_last_not_of: این دو تابع دقیقا مشابه دو تابع قبلی عمل میکنند با این تفاوت که همانند تابع rfind رشته را از انتها به ابتدا جهت یافتن آخرین کاراکتر مورد نظر جستجو میکند.



برنامه ای که یک رشته را در رشته ای دیگر کپی میکند.


ادامه مطلب(کد برنامه)

strncpy تابع کپی تعداد مشخصی از کاراکتر های یک رشته در دیگری

 شکل کلی:

;(تعداد کاراکتر کپی شونده ,رشته مبدا ,نقطه ی آغازین عمل کپی+رشته مقصد)strncpy


مثال:

strncpy(str1+m;str2;n);
//end


در مثال فوق تعداد n کاراکتر ابتدایی رشته ی str2 را از کاراکتر (m+1) ام رشته ی str1 تا محل (m+n+1) کپی میکند. اگر تعداد کاراکتر هایی که در str2 وجود دارد، کمتر از مقدار n باشد، به تعداد لازم کاراکتر NULL در انتهای str1 کپی میشود.


strcat تابع الحاق دو رشته
شکل کلی:

;(رشته مبدا ,رشته مقصد)strcat


مثال:
strcat(str1, str2);
//end
عملکرد این تابع به این صورت است که محتویات رشته ی str2 را به انتهای رشته ی str1 از مکانی که علامت NULL قرار گرفته اضافه میکند. به عنوان مثال اگر رشته ی str1 شامل کلمه ی "computer" و رشته ی str2 شامل کلمه ی "science" باشد، حاصل عملیات، ذخیره ی عبارت "computer science" در str1 میشود.

نکته: این تابع نیز تنها برای رشته های از نوع آرایه های کاراکتری تعریف شده است و برای الحاق هرگونه رشته به رشته ای از نوع string باید از عملگر + استفاده کنید.


strcmp تابع مقایسه دو رشته، موجود در cstring.h

شکل کلی:

;(رشته 2 ,رشته 1)int result=strcmp

مثال:

int result=strcmp(str1, str2);
//end

این تابع شروع به مقایسه ی کاراکتر های هر دو رشته از ابتدا ی آنها میکند تا به اولین مورد اختلاف برسد. اگر کاراکتر مربوط به رشته ی 1 بزرگتر از کاراکتر مربوط به رشته ی 2 باشد، مقداری مثبت یعنی عدد 1 را برمیگرداند.این بدان مفهوم است که str1>str2. هم چنین به عکس اگر کاراکتر مربوط به رشته ی 1 کوچکتر از کاراکتر مربوط به رشته ی 2 باشد، مقداری منفی یعنی عدد -1 را به مفهوم اینکه str1<str2 است، بر میگرداند. اگر دو رشته با هم مساوی باشند، مقدار 0 برگردانده میشود.


strcpy تابع انتساب رشته های کاراکتری، موجود در cstring.h

شکل کلی تابع:

;(رشته مبدا ،رشته مقصد)strcpy

مثال:
strcpy(str1, str2);

strcpy(str, "Computer");

//end


تذکر:
1. کپی کردن هر گونه رشته در رشته ای از نوع string به واسطه ی دستور انتساب(=) صورت میگیرد. بنابراین هیچ یک از پارامتر ها strcpy نمی تواند از نوع string باشد.
2. مراقب باشید که رشته ی مقصد طول کوچکتری نسبت به رشته ی مبدا نداشته باشد.


آرایه های کاراکتری به عنوان آرگومان تابع:

چون رشته ها در زبان C++ همان آرایه های یک بعدی است که از نوع کاراکتری است. شیوه ی ارسال رشته ها به توابع همانند آرایه است، یعنی در آرگومان تابع نام رشته ذکر میشود و پارامتر معادل آن میتواند آرایه ای از کاراکتر ها با طول معیّن باشد.

شکل کلی:

void f1(char []);
int main()
{
    char s[21];
    ...
    f1(s);
    return 0;
}

void f1(char s[])
{
    ...
}

//end


مقدار دهی اولیه به آرایه های کاراکتری:

برای مقدار دهی اولیه به آرایه های کاراکتری دو روش وجود دارد:
1.

char ch[4] = "ali";

char ch[] = "computer";

//end

2.
char ch[8] = {'p','r','o','g','r','a','m','\0'};

char ch[] = {'a','l','i','\0'};

//end

ورودی - خروجی رشته ها:
قبلا دستورات cin و cout را برای ورودی و خروجی داده ها بررسی کرده ایم. از همین دستورات می توان برای ورودی - خروجی رشته ها استفاده کرد. در دستورات زیر cin رشته ی ch را می خواند و cout آن را در صفحه نمایش میدهد:

char ch[31];
cin>>ch;
cout<<"ch is: "<<ch;

//end

خواندن رشته ها با تابع get():
get یک تابع عضو(Member Function) شی(Object) ورودی cin است و کاربرد های مختلفی دارد:
1. کاربرد cin.get() برای خواندن یک کاراکتر:
char ch;
ch=cin.get();

//end

2. کاربرد cin.get() برای خواندن رشته ها:
1)cin.get(نام رشته, طول رشته);
2)cin.get(نام رشته, طول رشته, 'جدا کننده');

//end
مثال:

char x[20];
cin.get(8,15);
cin.get(5,15,'.');

//end

تقاوت cin و cin.get() در خواندن رشته ها:
در دستور cin.get فقط کلید Enter، انتهای رشته را مشخص میکند، مگر اینکه برنامه نویس کاراکتر دیگری را برای این منظور مشخص کند. در این دستور رشته میتواند حاوی فاصله(Space) و یا Tab باشد. در حالی که در دستور cin، فاصله(Space) و Tab نیز به عنوان جدا کننده تلقّی شده، انتهای رشته را مشخص می کنند.