#cstring #string.h #memchr
🔵رشته ها (string)
توضیحات قبل در پست
https://t.me/Learncpp/856
🔹تابع memchr
output :
'p' found at position 5
در خط 6 یک اشاره گر تعریف شده برای اینکه آدرس کاراکتری را که به دنبال آن می گردیم داخل خودش بریزد.
در خط 7 یک رشته از کاراکترها را به صورت آرایه تعریف می کند و همانطور که می دانید اسم آرایه اگر خودش تنها باشد به آدرس اولین کاراکتر آرایه اشاره می کند مثلا داخل این برنامه اگر جایی از برنامه از str خالی استفاده کنیم یعنی داریم به ابتدای آرایه اشاره می کنیم.
سپس str و 'p' و طول str را به تابع می دهد و مقدار بازگشتی اش که یک اشاره گر است را در pch می ریزد. در این برنامه تابع streln( ) طول یک رشته را برای ما بر می گرداند.حالا چرا طول آرایه ؟ چون ما می خواهیم تا آخر رشته را جستجو کنیم و آخر رشته یعنی از اول رشته به اندازه ی طول رشته جلو برویم، اگر از اول رشته به اندازه طول رشته جلو برویم دقیقا به آخر رشته می رسیم پس داریم از اول تا آخر رشته به دنبال کاراکتر 'p' می گردیم،سپس چک می کند pch مساوی NULL است یا نه اگر NULL باشد که یعنی داخل رشته هیچ کاراکتر 'p' وجود ندارد ولی اگر مساوی NULL نباشد یعنی اینکه آدرس جایی که 'p' ذخیره شده داخل pch ریخته شده است، حالا ما چطور باید موقعیت 'p' را داخل str پیدا کنیم ؟
توضیح داده شد که اسم آرایه به تنهایی به اولین کاراکتر داخل آرایه اشاره می کند و این را هم می دانیم که تمام عناصر آرایه پشت سر هم ذخیره می شوند. اگر فرض کنیم که رشته ی ما از آدرس 100 حافظه شروع شده باشد پس آخرین کاراکتر رشته داخل آدرس 100 + strlen(str) ذخیره خواهد شد
یعنی :
100 E 0
101 x 1
102 a 2
103 m 3
104 p 4
105 l 5
106 e 6
107 space 7
108 s 8
109 t 9
110 r 10
111 i 11
112 n 12
113 g 13
114 \n 14
حالا اگر بخواهیم موقعیت 'p' را به دست آوریم کافی است آدرس 'p' را از str کم کنیم یعنی صد و چهار منهای صد می کنیم که پاسخ 4 میشود چرا ؟؟؟
چون اندیس اولین خانه ی آرایه از صفر شروع می شود و 4 شماره ی اندیس آرایه مان است پس اگر با یک آن را جمع کنیم موقعیت حقیقی کاراکتر پیدا می شود.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵رشته ها (string)
توضیحات قبل در پست
https://t.me/Learncpp/856
🔹تابع memchr
1. #include <iostream>
2. #include <string.h>
3. using namespace std;
4. int main( )
5. {6. char *pch;
7. char str[ ]="Exampel string";
8. pch=(char *)memchr(str,'p',strlen(str));
9. if(pch == NULL)
10.cout<<"'p' not found.\n";
11.else
12.cout<<"'p' found at position \n"<<pch-str+1;
13.return 0;
14.}
output :
'p' found at position 5
در خط 6 یک اشاره گر تعریف شده برای اینکه آدرس کاراکتری را که به دنبال آن می گردیم داخل خودش بریزد.
در خط 7 یک رشته از کاراکترها را به صورت آرایه تعریف می کند و همانطور که می دانید اسم آرایه اگر خودش تنها باشد به آدرس اولین کاراکتر آرایه اشاره می کند مثلا داخل این برنامه اگر جایی از برنامه از str خالی استفاده کنیم یعنی داریم به ابتدای آرایه اشاره می کنیم.
سپس str و 'p' و طول str را به تابع می دهد و مقدار بازگشتی اش که یک اشاره گر است را در pch می ریزد. در این برنامه تابع streln( ) طول یک رشته را برای ما بر می گرداند.حالا چرا طول آرایه ؟ چون ما می خواهیم تا آخر رشته را جستجو کنیم و آخر رشته یعنی از اول رشته به اندازه ی طول رشته جلو برویم، اگر از اول رشته به اندازه طول رشته جلو برویم دقیقا به آخر رشته می رسیم پس داریم از اول تا آخر رشته به دنبال کاراکتر 'p' می گردیم،سپس چک می کند pch مساوی NULL است یا نه اگر NULL باشد که یعنی داخل رشته هیچ کاراکتر 'p' وجود ندارد ولی اگر مساوی NULL نباشد یعنی اینکه آدرس جایی که 'p' ذخیره شده داخل pch ریخته شده است، حالا ما چطور باید موقعیت 'p' را داخل str پیدا کنیم ؟
توضیح داده شد که اسم آرایه به تنهایی به اولین کاراکتر داخل آرایه اشاره می کند و این را هم می دانیم که تمام عناصر آرایه پشت سر هم ذخیره می شوند. اگر فرض کنیم که رشته ی ما از آدرس 100 حافظه شروع شده باشد پس آخرین کاراکتر رشته داخل آدرس 100 + strlen(str) ذخیره خواهد شد
یعنی :
100 E 0
101 x 1
102 a 2
103 m 3
104 p 4
105 l 5
106 e 6
107 space 7
108 s 8
109 t 9
110 r 10
111 i 11
112 n 12
113 g 13
114 \n 14
حالا اگر بخواهیم موقعیت 'p' را به دست آوریم کافی است آدرس 'p' را از str کم کنیم یعنی صد و چهار منهای صد می کنیم که پاسخ 4 میشود چرا ؟؟؟
چون اندیس اولین خانه ی آرایه از صفر شروع می شود و 4 شماره ی اندیس آرایه مان است پس اگر با یک آن را جمع کنیم موقعیت حقیقی کاراکتر پیدا می شود.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
Telegram
Learning ©➕➕
#cstring #string.h #memchr
🔵رشته ها (string)
🔹تابع memchr
const void *memchr ( const void *ptr, int value, size_t num);
void *memchr ( void *ptr, int value, size_t num);
این تابع داخل یک قسمت از حافظه به دنبال یک کاراکتر خاص می گردد.
نحوه کار این…
🔵رشته ها (string)
🔹تابع memchr
const void *memchr ( const void *ptr, int value, size_t num);
void *memchr ( void *ptr, int value, size_t num);
این تابع داخل یک قسمت از حافظه به دنبال یک کاراکتر خاص می گردد.
نحوه کار این…
#cstring #string.h #strchr
🔵رشته ها (string)
🔹تابع strchr
این تابع مانند تابع memchr عمل می کند ولی این تابع از جایی که ما تعیین می کنیم تا آخر آرایه را جستجو می کند.
🔹پارامتر ها:
🔻مفهوم str :
رشته یا آرایه ای که می خواهیم جستجو کنیم.
🔻مفهوم character :
کاراکتری که می خواهیم به دنبال آن بگردیم.
مثال)
Output:
Looking for the 's' character in "This is a sample string"...
found at 4
found at 7
found at 11
found at 18
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵رشته ها (string)
🔹تابع strchr
const char *strchr(const char *str,int character);char *strchr(char *str,int character);این تابع مانند تابع memchr عمل می کند ولی این تابع از جایی که ما تعیین می کنیم تا آخر آرایه را جستجو می کند.
🔹پارامتر ها:
🔻مفهوم str :
رشته یا آرایه ای که می خواهیم جستجو کنیم.
🔻مفهوم character :
کاراکتری که می خواهیم به دنبال آن بگردیم.
مثال)
#include <iostream>
#include <string.h>
using namespace std;
int main ( )
{char str[ ] = "This is a sample string";
char *pch;
cout<<"Looking for the 's' character in "<<str<<endl;
pch=strchr(str,'s');
while (pch!=NULL)
{cout<<"found at \n"<<pch-str+1;
pch=strchr(pch+1,'s');
}
return 0;
}
Output:
Looking for the 's' character in "This is a sample string"...
found at 4
found at 7
found at 11
found at 18
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstring #string.h #strcspn
🔵رشته ها (string)
🔹تابع strcspn
در توابع memchr و strchr به دنبال یک کاراکتر داخل یک رشته می گشتیم حالا با این تابع به دنبال یک دسته از کاراکترها داخل یک رشته می گردیم یعنی اگر هر کدام از کاراکترهای رشته ی دوم داخل رشته ی اول باشد تابع موقعیت آن کاراکتر را داخل رشته ی اول برمی گرداند و اگر هیچ کاراکتری پیدا نشود طول رشته ی اول را برمی گرداند.
در واقع این تابع به دنبال تک تک کاراکتر های رشته ی دوم داخل رشته اول می گردد و اگر کاراکتری از رشته ی دوم را در رشته ی اول پیدا کرد موقعیت آن کاراکتر را در رشته ی اول برمی گرداند.
🔹پارامتر ها:
🔻مفهوم str1 :
این همان رشته ای است که می خواهیم عملیات جستجو را انجام دهیم.
🔻مفهوم str2 :
این رشته یا دسته ای از کاراکترهایی است که می خواهیم داخل رشته ی اول آن ها را جستجو کنیم.
مثال)
Output:
The first number in str is at position 5
در خط 6 یک رشته در قالب یک آرایه تعریف می شود و همانطور که می دانید اسم آرایه به تنهایی شامل یه اشاره گر به ابتدای آرایه است.
در خط 7 باز رشته ی دیگری تعریف می شود.
درخط 9 به اینصورت است که str و keys را به تابع می دهیم بعد ازآن هم مقدار i+1 رو چاپ می کنیم.
چرا خروجی 5 میشود؟؟
شما فرض کنید رشته اولیه از آدرس 100 و رشته دوم از آدرس 200 شروع می شود.
100 f 200 1
101 c 201 2
102 b 202 3
103 a 203 4
105 7 204 5
106 3 205 6
206 7
207 8
208 9
209 0
حالا اگر دقت کنید اولین کاراکتری که داخل str است و داخل keys هم هست کاراکتر 7 است یعنی اولین کاراکتر مشترک داخل دو تا رشته کاراکتر 7 است پس موقعیت آن را داخل رشته ی اول که برابر با 4 است را برمی گرداند اما همانطور که می دانیم عدد چهار اندیس عنصری از آرایه است که داخل آن کاراکتر 7 ذخیره شده پس موقعیت حقیقی آن 5 می شود.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵رشته ها (string)
🔹تابع strcspn
size_t strcspn(const char *str1,const char *str2);در توابع memchr و strchr به دنبال یک کاراکتر داخل یک رشته می گشتیم حالا با این تابع به دنبال یک دسته از کاراکترها داخل یک رشته می گردیم یعنی اگر هر کدام از کاراکترهای رشته ی دوم داخل رشته ی اول باشد تابع موقعیت آن کاراکتر را داخل رشته ی اول برمی گرداند و اگر هیچ کاراکتری پیدا نشود طول رشته ی اول را برمی گرداند.
در واقع این تابع به دنبال تک تک کاراکتر های رشته ی دوم داخل رشته اول می گردد و اگر کاراکتری از رشته ی دوم را در رشته ی اول پیدا کرد موقعیت آن کاراکتر را در رشته ی اول برمی گرداند.
🔹پارامتر ها:
🔻مفهوم str1 :
این همان رشته ای است که می خواهیم عملیات جستجو را انجام دهیم.
🔻مفهوم str2 :
این رشته یا دسته ای از کاراکترهایی است که می خواهیم داخل رشته ی اول آن ها را جستجو کنیم.
مثال)
1. #include <iostream>
2. #include <string.h>
3. using namespace std;
4. int main ( )
5. {
6. char str[ ]="fcba73";
7. char keys[ ]="1234567890";
8. int i;
9. i=strcspn(str,keys);
10. cout<<"The first number in str is at position \n"<<i+1;
11. return 0;
12. }
Output:
The first number in str is at position 5
در خط 6 یک رشته در قالب یک آرایه تعریف می شود و همانطور که می دانید اسم آرایه به تنهایی شامل یه اشاره گر به ابتدای آرایه است.
در خط 7 باز رشته ی دیگری تعریف می شود.
درخط 9 به اینصورت است که str و keys را به تابع می دهیم بعد ازآن هم مقدار i+1 رو چاپ می کنیم.
چرا خروجی 5 میشود؟؟
شما فرض کنید رشته اولیه از آدرس 100 و رشته دوم از آدرس 200 شروع می شود.
100 f 200 1
101 c 201 2
102 b 202 3
103 a 203 4
105 7 204 5
106 3 205 6
206 7
207 8
208 9
209 0
حالا اگر دقت کنید اولین کاراکتری که داخل str است و داخل keys هم هست کاراکتر 7 است یعنی اولین کاراکتر مشترک داخل دو تا رشته کاراکتر 7 است پس موقعیت آن را داخل رشته ی اول که برابر با 4 است را برمی گرداند اما همانطور که می دانیم عدد چهار اندیس عنصری از آرایه است که داخل آن کاراکتر 7 ذخیره شده پس موقعیت حقیقی آن 5 می شود.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstring #string.h #strpbrk
🔵رشته ها (string)
🔹تابع strpbrk
این تابع در نگاه اول کمی گیج کننده و یک تابع کم کاربرد به نظر می رسد, این تابع اولین کاراکتر از رشته ی اول را با تمام کاراکتر های رشته ی دوم چک می کند اگر پیدا شد که آدرس آن کاراکتر را برمی گرداند اگر نبود دومین کاراکتر از رشته ی اول را با تمام کاراکترهای رشته ی دوم مقایسه می کند درصورت پیدا شدن آدرسش را برمی گرداند
اگر نشد همین گونه تا آخر ادامه پیدا می کند تا به آخر رشته ی اول برسد یا به عبارت ساده تر اولین کاراکتر مشترک بین رشته ی اول و رشته ی دوم را برمی گرداند.
🔹پارامتر ها:
🔻مفهوم str1 :
رشته ای است که می خواهیم داخل مجموعه ای از کاراکترها به دنبال آن بگردیم.
🔻مفهوم str2 :
رشته ای است که در رشته اول به دنبالش می گردیم.
🔹مقادیر بازگشتی :
اگر در رشته ی اول کاراکتری مشابه هر کدام از کاراکترهای رشته ی دوم پیدا کند آدرسش را بر می گرداند اگر پیدا نشد که مقدار 0 یا همان NULL را بر می گرداند.
Output :
Not found
برنامه بالا اولین کاراکتر از رشته ی اول که a هست را با تک تک کاراکتر های رشته ی دوم چک می کند و همان طور که می بینید کاراکتر a در رشته ی دوم وجود ندارد پس سراغ کاراکتر دوم از رشته ی اول که d هست می رود و باز هم می بینید که کاراکتر d در رشته ی دوم وجود ندارد پس به سراغ کاراکتر سوم می رود و تا آخر همین گونه ادامه می یابد.
چون هیچ کاراکتر مشترکی بین این دو تابع وجود ندارد مقدار NULL یا همان 0 برگردانده می شود.
مثال)
Output :
r
خوب چرا r ؟؟؟ r اولین کاراکتر مشترک بین رشته ی اول و رشته ی دومی است.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵رشته ها (string)
🔹تابع strpbrk
const char *strpbrk(const char *str1,const char *str2);char *strpbrk(char *str1,const char *str2);این تابع در نگاه اول کمی گیج کننده و یک تابع کم کاربرد به نظر می رسد, این تابع اولین کاراکتر از رشته ی اول را با تمام کاراکتر های رشته ی دوم چک می کند اگر پیدا شد که آدرس آن کاراکتر را برمی گرداند اگر نبود دومین کاراکتر از رشته ی اول را با تمام کاراکترهای رشته ی دوم مقایسه می کند درصورت پیدا شدن آدرسش را برمی گرداند
اگر نشد همین گونه تا آخر ادامه پیدا می کند تا به آخر رشته ی اول برسد یا به عبارت ساده تر اولین کاراکتر مشترک بین رشته ی اول و رشته ی دوم را برمی گرداند.
🔹پارامتر ها:
🔻مفهوم str1 :
رشته ای است که می خواهیم داخل مجموعه ای از کاراکترها به دنبال آن بگردیم.
🔻مفهوم str2 :
رشته ای است که در رشته اول به دنبالش می گردیم.
🔹مقادیر بازگشتی :
اگر در رشته ی اول کاراکتری مشابه هر کدام از کاراکترهای رشته ی دوم پیدا کند آدرسش را بر می گرداند اگر پیدا نشد که مقدار 0 یا همان NULL را بر می گرداند.
#include <iostream>
#include <string.h>
using namespace std;
int main ( )
{
char str[ ]="adfgjkls";
char keys[ ]="qwertyhzxcvbnm";
char *i;
i=strpbrk(str,keys);
if(i!=NULL)
cout<<*i<<endl;
else
cout<<"not found"<<endl;
return 0;
}
Output :
Not found
برنامه بالا اولین کاراکتر از رشته ی اول که a هست را با تک تک کاراکتر های رشته ی دوم چک می کند و همان طور که می بینید کاراکتر a در رشته ی دوم وجود ندارد پس سراغ کاراکتر دوم از رشته ی اول که d هست می رود و باز هم می بینید که کاراکتر d در رشته ی دوم وجود ندارد پس به سراغ کاراکتر سوم می رود و تا آخر همین گونه ادامه می یابد.
چون هیچ کاراکتر مشترکی بین این دو تابع وجود ندارد مقدار NULL یا همان 0 برگردانده می شود.
مثال)
#include <iostream>
#include <string.h>
using namespace std;
int main ( )
{
char str[ ]="adrfgjxkls";
char keys[ ]="qwertyhzxcvbnm";
char *i;
i=strpbrk(str,keys);
if(i!=0)
cout<<*i<<endl;
else
cout<<"not found"<<endl;
return 0;
}
Output :
r
خوب چرا r ؟؟؟ r اولین کاراکتر مشترک بین رشته ی اول و رشته ی دومی است.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstring #string.h #strrchr
🔵رشته ها (string)
🔹تابع strrchr
این تابع مانند تابع strchr عمل می کند با این تفاوت که آخرین کاراکتر مشابه character در آرایه ی str را برمی گرداند(البته می دانید که یک اشاره گر بر می گرداند)
🔹پارامتر ها:
🔻مفهوم str :
این همان آرایه یا رشته ای است که می خواهیم داخلش جستجو کنیم.
🔻مفهوم character :
این همان کاراکتری است که به دنبال آن می گردیم.
🔹مقادیر برگشتی :
اگر این تابع بتواند کاراکتر ما را پیدا کند که آدرس آن را برمی گرداند اما اگر نتواند کاراکتری پیدا کند مقدار NULL را برمی گرداند.
مثال)
Output:
Last occurence of 's' found at 18
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵رشته ها (string)
🔹تابع strrchr
const char *strrchr(const char *str,int character);char *strrchr(char *str,int character);این تابع مانند تابع strchr عمل می کند با این تفاوت که آخرین کاراکتر مشابه character در آرایه ی str را برمی گرداند(البته می دانید که یک اشاره گر بر می گرداند)
🔹پارامتر ها:
🔻مفهوم str :
این همان آرایه یا رشته ای است که می خواهیم داخلش جستجو کنیم.
🔻مفهوم character :
این همان کاراکتری است که به دنبال آن می گردیم.
🔹مقادیر برگشتی :
اگر این تابع بتواند کاراکتر ما را پیدا کند که آدرس آن را برمی گرداند اما اگر نتواند کاراکتری پیدا کند مقدار NULL را برمی گرداند.
مثال)
#include <iostream>
#include <string.h>
using namespace std;
int main ( )
{
char str[ ]="This is a sample string";
char *pch;
pch=strrchr(str,'s');
cout<<"Last occurence of 's' found at \n"<<pch-str+1;
return 0;
}
Output:
Last occurence of 's' found at 18
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstring #string.h #strlen
🔵رشته ها (string)
🔹تابع strlen
پارامتر str رشته است و خروجی آن یعنی size_t یک تایپ صحیح بدون علامت می باشد که بسته به نیاز می توان آن را به صورت short یا long تعریف کرد
نحوه عملکرد این تابع نیز به این صورت می باشد که این تابع تعداد کاراکتر ها را از ابتدا مکانی که اشاره گر str به آن اشاره می کند می شمارد تا به کاراکتر '0\' برسد. دقت کنید که خود '0\' شمرده نمی شود بنابراین رشته " " یک رشته تهی محسوب شده و طول آن صفر در نظر گرفته می شود. همچنین دقت کنید که رشته "Ali" با آرایه 'A' , 'l' , 'i' متفاوت می باشد چرا که رشته "Ali" در اصل برابر است با آرایه 'A' , 'l' , 'i' , '\0' .
مثال)
output :
Enter sentence: just testing
The sentence entered is 12 characters long.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵رشته ها (string)
🔹تابع strlen
size_t strlen(const char *str);
پارامتر str رشته است و خروجی آن یعنی size_t یک تایپ صحیح بدون علامت می باشد که بسته به نیاز می توان آن را به صورت short یا long تعریف کرد
نحوه عملکرد این تابع نیز به این صورت می باشد که این تابع تعداد کاراکتر ها را از ابتدا مکانی که اشاره گر str به آن اشاره می کند می شمارد تا به کاراکتر '0\' برسد. دقت کنید که خود '0\' شمرده نمی شود بنابراین رشته " " یک رشته تهی محسوب شده و طول آن صفر در نظر گرفته می شود. همچنین دقت کنید که رشته "Ali" با آرایه 'A' , 'l' , 'i' متفاوت می باشد چرا که رشته "Ali" در اصل برابر است با آرایه 'A' , 'l' , 'i' , '\0' .
مثال)
#include <iostream>
#include <string.h>
using namespace std;
int main ( )
{char szInput[256];
cout<<"Enter a sentence:";
gets(szInput);
cout<<"The sentence entered is "<<(unsigned)strlen(szInput)<<"characters long.\n";
return 0;
}
output :
Enter sentence: just testing
The sentence entered is 12 characters long.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#vector
📚فهرست آموزش کتابخانه vector(وکتورها)
♦️وکتورچیست
#vector
t.me/Learncpp/550
♦️توضیحات بیشتر درباره وکتور
t.me/Learncpp/551
#pop_back
t.me/Learncpp/552
#push_back
t.me/Learncpp/553
#insert
1. t.me/Learncpp/556
2. t.me/Learncpp/557
#erase
t.me/Learncpp/558
#capacity
t.me/Learncpp/559
#clear
t.me/Learncpp/560
#size
t.me/Learncpp/563
#reserve
t.me/Learncpp/563
#resize
t.me/Learncpp/567
#max_size
t.me/Learncpp/572
#at
t.me/Learncpp/573
#operator
t.me/Learncpp/576
#Empty
t.me/Learncpp/582
#iterator
t.me/Learncpp/584
#Begin
t.me/Learncpp/588
#cbegin
t.me/Learncpp/589
#Rbegin
t.me/Learncpp/590
#crbegin
t.me/Learncpp/591
#End
t.me/Learncpp/595
#cend
t.me/Learncpp/596
#Rend
t.me/Learncpp/597
#crend
t.me/Learncpp/612
#Back
t.me/Learncpp/601
#Emplace
t.me/Learncpp/606
#Emplace_back
t.me/Learncpp/607
#operator
t.me/Learncpp/611
#Front
t.me/Learncpp/613
#swap
1. t.me/Learncpp/616
2. t.me/Learncpp/617
#data
t.me/Learncpp/621
#shrink_to_fit
t.me/Learncpp/625
#vector::vector
1. t.me/Learncpp/632
2. t.me/Learncpp/633
3. t.me/Learncpp/634
#assing
t.me/Learncpp/641
#relation_operator
t.me/Learncpp/652
📝ترجمه کتابخانه از سایت رسمی برنامه نویسان ++C
www.cplusplus.com
🔸کمک به بچه های سرطانی
💝@tabligh_cpp
🔹آموزش تخصصی ++C
🛡@Learncpp
📚فهرست آموزش کتابخانه vector(وکتورها)
♦️وکتورچیست
#vector
t.me/Learncpp/550
♦️توضیحات بیشتر درباره وکتور
t.me/Learncpp/551
#pop_back
t.me/Learncpp/552
#push_back
t.me/Learncpp/553
#insert
1. t.me/Learncpp/556
2. t.me/Learncpp/557
#erase
t.me/Learncpp/558
#capacity
t.me/Learncpp/559
#clear
t.me/Learncpp/560
#size
t.me/Learncpp/563
#reserve
t.me/Learncpp/563
#resize
t.me/Learncpp/567
#max_size
t.me/Learncpp/572
#at
t.me/Learncpp/573
#operator
t.me/Learncpp/576
#Empty
t.me/Learncpp/582
#iterator
t.me/Learncpp/584
#Begin
t.me/Learncpp/588
#cbegin
t.me/Learncpp/589
#Rbegin
t.me/Learncpp/590
#crbegin
t.me/Learncpp/591
#End
t.me/Learncpp/595
#cend
t.me/Learncpp/596
#Rend
t.me/Learncpp/597
#crend
t.me/Learncpp/612
#Back
t.me/Learncpp/601
#Emplace
t.me/Learncpp/606
#Emplace_back
t.me/Learncpp/607
#operator
t.me/Learncpp/611
#Front
t.me/Learncpp/613
#swap
1. t.me/Learncpp/616
2. t.me/Learncpp/617
#data
t.me/Learncpp/621
#shrink_to_fit
t.me/Learncpp/625
#vector::vector
1. t.me/Learncpp/632
2. t.me/Learncpp/633
3. t.me/Learncpp/634
#assing
t.me/Learncpp/641
#relation_operator
t.me/Learncpp/652
📝ترجمه کتابخانه از سایت رسمی برنامه نویسان ++C
www.cplusplus.com
🔸کمک به بچه های سرطانی
💝@tabligh_cpp
🔹آموزش تخصصی ++C
🛡@Learncpp
Telegram
Learning ©➕➕
#vector
🔵 وکتور(vector) چیست
خوب اول ما باید بدونیم وکتور یا همون بردار چیه تا بتونیم تشخیص بدیم که کجا باید ازش استفاده کنیم شما تا حالا حتما از آرایه ها استفاده کردید و حتما بزرگ ترین مشکل آرایه ها رو هم میدونید و اون مشکل همون ثابت بودن طول آرایه است،…
🔵 وکتور(vector) چیست
خوب اول ما باید بدونیم وکتور یا همون بردار چیه تا بتونیم تشخیص بدیم که کجا باید ازش استفاده کنیم شما تا حالا حتما از آرایه ها استفاده کردید و حتما بزرگ ترین مشکل آرایه ها رو هم میدونید و اون مشکل همون ثابت بودن طول آرایه است،…
#csting #string.h
📚فهرست آموزش کتابخانه string(رشته ها)
#memcpy
t.me/Learncpp/700
#memmove
t.me/Learncpp/702
#strcpy
t.me/Learncpp/733
#strncpy
t.me/Learncpp/745
#strcat
t.me/Learncpp/758
#strncat
t.me/Learncpp/782
#strcmp
t.me/Learncpp/811
#strncmp
t.me/Learncpp/831
#memchr
1. t.me/Learncpp/856
2. t.me/Learncpp/880
#strchr
t.me/Learncpp/900
#strcspn
t.me/Learncpp/914
#strpbrk
t.me/Learncpp/939
#strrchr
t.me/Learncpp/959
#strlen
t.me/Learncpp/986
📝ترجمه کتابخانه از سایت رسمی برنامه نویسان ++C
www.cplusplus.com
🔸کمک به بچه های سرطانی
💝 @tabligh_cpp
🔹آموزش تخصصی ++C
🛡@Learncpp
📚فهرست آموزش کتابخانه string(رشته ها)
#memcpy
t.me/Learncpp/700
#memmove
t.me/Learncpp/702
#strcpy
t.me/Learncpp/733
#strncpy
t.me/Learncpp/745
#strcat
t.me/Learncpp/758
#strncat
t.me/Learncpp/782
#strcmp
t.me/Learncpp/811
#strncmp
t.me/Learncpp/831
#memchr
1. t.me/Learncpp/856
2. t.me/Learncpp/880
#strchr
t.me/Learncpp/900
#strcspn
t.me/Learncpp/914
#strpbrk
t.me/Learncpp/939
#strrchr
t.me/Learncpp/959
#strlen
t.me/Learncpp/986
📝ترجمه کتابخانه از سایت رسمی برنامه نویسان ++C
www.cplusplus.com
🔸کمک به بچه های سرطانی
💝 @tabligh_cpp
🔹آموزش تخصصی ++C
🛡@Learncpp
Telegram
Learning ©➕➕
#cstring #string.h #memcpy
🔵رشته ها (string)
🔹تابع memcpy
void *memcpy(void *to,const void *from,unsigned count)
این تابع قسمتی از آرایه را در آرایه ی دیگر کپی می کند.
در الگوی فوق from اشاره گری است که به آرایه ی منبع ( آرایه ای که کاراکتر های مورد…
🔵رشته ها (string)
🔹تابع memcpy
void *memcpy(void *to,const void *from,unsigned count)
این تابع قسمتی از آرایه را در آرایه ی دیگر کپی می کند.
در الگوی فوق from اشاره گری است که به آرایه ی منبع ( آرایه ای که کاراکتر های مورد…
🔸ترجمه کتابخانه "عملیات ورودی/خروجی (cstdio)" از سایت رسمی برنامه نویسان ++C به آدرس
www.cplusplus.com/reference
@Learncpp
www.cplusplus.com/reference
@Learncpp
#cstdio #cstdio.h
🔵عملیات ورودی/خروجی(cstdio)
🔴کتابخانه cstdio
می توان با استفاده از کتابخانه های ورودی و خروجی استاندارد [c standard input and output (cstdio)] سی پلاس پلاس که حاوی مجموعه ای از امکانات ورودی/خروجی است؛ عملیات های ورودی و خروجی را انجام داد.
این کتابخانه از جریان هایی برای برقراری ارتباط با دستگاه های فیزیکی(مانند صفحه کلید، راه انداز دیسک، پرینتر، ارتباط شبکه ای، صفحه نمایش و ...) استفاده می کند.
🔹جریان ها(Stream) :
در زبان++C ورودی و خروجی در جریان هایی از بایت ها اتفاق می افتد.
جریان تنها دنباله ای از بایت ها است. در عملیات ورودی، بایت ها از یک دستگاه به طرف حافظه اصلی جریان پیدا می کنند.
در عملیات خروجی، بایت ها از حافظه ی اصلی به طرف یک دستگاه جریان می یابند.
جریان ها در کتابخانه stdio به وسیله اشاره گرهایی به فایل ها(شی هایی شامل اطلاعات برای کنترل جریان )به کار گرفته می شود.
یک اشاره گر به فایل، جریان منحصر به فردی است که به عنوان یک پارامتر در عملیات مربوط به آن جریان استفاده می شود.
🔹سه جریان استاندارد وجود دارد :
🔻stdin(standard input stream)
🔻stdout(standard output stream)
🔻stderr(standard error stream)
که به طور خودکار برای برنامه هایی که از کتابخانه ها استفاده می کنند ساخته و باز می شود.
🔹مشخصات جریان
جریان ها دارای خواصی هستند که نشان می دهد کدام توابع می تواند در آنها استفاده شود و چگونه این خواص در داده های ورودی و یا خروجی تاثیر می گذارند.
🔹توابع عملیات بر روی فایل
🔻remove(remove file)
🔻rename(rename file)
🔻tmpfile(open a temporary file)
🔻tmpnam(generate temporary filename)
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵عملیات ورودی/خروجی(cstdio)
🔴کتابخانه cstdio
می توان با استفاده از کتابخانه های ورودی و خروجی استاندارد [c standard input and output (cstdio)] سی پلاس پلاس که حاوی مجموعه ای از امکانات ورودی/خروجی است؛ عملیات های ورودی و خروجی را انجام داد.
این کتابخانه از جریان هایی برای برقراری ارتباط با دستگاه های فیزیکی(مانند صفحه کلید، راه انداز دیسک، پرینتر، ارتباط شبکه ای، صفحه نمایش و ...) استفاده می کند.
🔹جریان ها(Stream) :
در زبان++C ورودی و خروجی در جریان هایی از بایت ها اتفاق می افتد.
جریان تنها دنباله ای از بایت ها است. در عملیات ورودی، بایت ها از یک دستگاه به طرف حافظه اصلی جریان پیدا می کنند.
در عملیات خروجی، بایت ها از حافظه ی اصلی به طرف یک دستگاه جریان می یابند.
جریان ها در کتابخانه stdio به وسیله اشاره گرهایی به فایل ها(شی هایی شامل اطلاعات برای کنترل جریان )به کار گرفته می شود.
یک اشاره گر به فایل، جریان منحصر به فردی است که به عنوان یک پارامتر در عملیات مربوط به آن جریان استفاده می شود.
🔹سه جریان استاندارد وجود دارد :
🔻stdin(standard input stream)
🔻stdout(standard output stream)
🔻stderr(standard error stream)
که به طور خودکار برای برنامه هایی که از کتابخانه ها استفاده می کنند ساخته و باز می شود.
🔹مشخصات جریان
جریان ها دارای خواصی هستند که نشان می دهد کدام توابع می تواند در آنها استفاده شود و چگونه این خواص در داده های ورودی و یا خروجی تاثیر می گذارند.
🔹توابع عملیات بر روی فایل
🔻remove(remove file)
🔻rename(rename file)
🔻tmpfile(open a temporary file)
🔻tmpnam(generate temporary filename)
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstdio #cstdio.h #remove
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع remove
حذف کردن فایلی که اسمش در مشخصه file name مشخص شده است.
این عملیات به طور مستقیم بر روی فایلی که با نام مشخص شده انجام می شود.
🔹پارامتر ها :
🔻مفهوم File name :
با این مشخصه می توان فایل را مشخص کرد، برای این کار تنها می بایست نام فایل اصلی به صورت string به برنامه داده شود.
همچنین می توانیم اسم فایل را به صورت آدرس (موجود باشد) به برنامه بدهیم.
🔹مقدار برگشتی :
اگر برنامه قادر به حذف کردن فایل شد، مقدار 0 را برمی گرداند و اگر نتوانست فایل را پاک کند، مقدار 1 را برمی گرداند.
مثال)
در شرط اول تابع remove صدا زده شده و اگر نامساوی صفر باشد ( یعنی قادر به پاک کردن فایل نباشد ) دستور زیر شرط اجرا می شود و خروجی برنامه
Error deleting file: no such file or directory
خواهد بود، در غیر اینصورت else و دستور زیر آن اجرا میشود و خروجی برنامه
file successfully deleted
خواهد بود.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع remove
int remove(const char *filename);حذف کردن فایلی که اسمش در مشخصه file name مشخص شده است.
این عملیات به طور مستقیم بر روی فایلی که با نام مشخص شده انجام می شود.
🔹پارامتر ها :
🔻مفهوم File name :
با این مشخصه می توان فایل را مشخص کرد، برای این کار تنها می بایست نام فایل اصلی به صورت string به برنامه داده شود.
string filename="myfile.txt";همچنین می توانیم اسم فایل را به صورت آدرس (موجود باشد) به برنامه بدهیم.
string filename="E:\\New folder\\myfile.txt";🔹مقدار برگشتی :
اگر برنامه قادر به حذف کردن فایل شد، مقدار 0 را برمی گرداند و اگر نتوانست فایل را پاک کند، مقدار 1 را برمی گرداند.
مثال)
#include <iostream>
#include <stdio.h>
using namespace std;
int main( )
{
if (remove("myfile.txt") != 0)
perror("Error delting file");
else
puts("file successfully deleted");
return 0;
}
در شرط اول تابع remove صدا زده شده و اگر نامساوی صفر باشد ( یعنی قادر به پاک کردن فایل نباشد ) دستور زیر شرط اجرا می شود و خروجی برنامه
Error deleting file: no such file or directory
خواهد بود، در غیر اینصورت else و دستور زیر آن اجرا میشود و خروجی برنامه
file successfully deleted
خواهد بود.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstdio #cstdio.h #rename
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع rename
این تابع قادر به تغییر نام فایل از نام قدیمی به نام جدید است.
این کار به طور مستقیم روی فایل انجام می شود و از هیچ جریانی استفاده نمی شود.
در صورتی که از این تابع استفاده می شود که نام جدید و نام قدیمی دو موقعیت متفاوت داشته باشند( در صورتی که هر دو موقعیت وجود داشته باشد ) فایل به موقعیت جدید انتقال پیدا می کند.
همچنین اگر نام جدید، نام فایل موجودی باشد یا تابع با شکست روبرو می شود و یا فایل جدید را جایگزین فایل قدیمی می کند(بسته به سیستم مورد استفاده و کتابخانه اجرا شده)
🔹پارامتر ها:
🔻مفهوم old name :
نام یا آدرس فایلی که موجود است می باشد (به صورت string)
🔻مفهوم new name :
نام یا آدرس جدید فایل
🔹مقدار برگشتی :
اگر برنامه موفق به تغییر فایل شد ، مقدار 0 را برمی گرداند در غیر اینصورت عدد غیر صفر را برمی گرداند.
مثال)
متغیر result تعریف و برابر با مقدار برگشتی تابع rename می باشد
اگر مقدار برابر صفر شد( همان طور که گفته شد، به معنای آن است که تابع به درستی اجرا شده) خروجی برنامه به صورت زیر خواهد بود
File successfully renamed
و در غیر اینصورت خروجی به صورت زیر است
Error renaming file: Permission denied
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع rename
int rename(const char *oldname,const char *newname);این تابع قادر به تغییر نام فایل از نام قدیمی به نام جدید است.
این کار به طور مستقیم روی فایل انجام می شود و از هیچ جریانی استفاده نمی شود.
در صورتی که از این تابع استفاده می شود که نام جدید و نام قدیمی دو موقعیت متفاوت داشته باشند( در صورتی که هر دو موقعیت وجود داشته باشد ) فایل به موقعیت جدید انتقال پیدا می کند.
همچنین اگر نام جدید، نام فایل موجودی باشد یا تابع با شکست روبرو می شود و یا فایل جدید را جایگزین فایل قدیمی می کند(بسته به سیستم مورد استفاده و کتابخانه اجرا شده)
🔹پارامتر ها:
🔻مفهوم old name :
نام یا آدرس فایلی که موجود است می باشد (به صورت string)
🔻مفهوم new name :
نام یا آدرس جدید فایل
🔹مقدار برگشتی :
اگر برنامه موفق به تغییر فایل شد ، مقدار 0 را برمی گرداند در غیر اینصورت عدد غیر صفر را برمی گرداند.
مثال)
#include <iostream>
#include <stdio.h>
using namespace std;
int main ( )
{
int result;
char oldname[ ]="oldname.txt";
char newname[ ]="newname.txt";
result=rename(oldname,newname);
if(result==0)
puts("File successfully renamed");
else
perror("Error renaming file");
return 0;
}
متغیر result تعریف و برابر با مقدار برگشتی تابع rename می باشد
اگر مقدار برابر صفر شد( همان طور که گفته شد، به معنای آن است که تابع به درستی اجرا شده) خروجی برنامه به صورت زیر خواهد بود
File successfully renamed
و در غیر اینصورت خروجی به صورت زیر است
Error renaming file: Permission denied
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstdio #cstdio.h #tmpfile
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع tmpfile
ایجاد و باز کردن فایلی موقت با یک نام منحصر به فرد که به صورت خودکار انتخاب می شود.
در صورت استفاده از این تابع، یک فایل باینری درست می شود [با سطح دسترسی "wb+" ( ساختن فایل با قابلیت خواندن و نوشتن )]
فایل موقتی که ساخته شده، بعد از بسته شدن استریم(جریان) یا زمانی که برنامه خاتمه پیدا می کند، به صورت خودکار حذف می شود اگر برنامه به صورت غیر طبیعی خاتمه پیدا کند، این که فایل حذف شود یا خیر، بستگی به سیستم و کتابخانه های مورد استفاده دارد.
🔹مقدار برگشتی :
در صورت اجرای کامل و موفق تابع، یک اشاره گر به فایل موقتی که ساخته شده برمی گرداند و در صورت اجرای ناقص NULL را برمی گرداند.
مثال )
این برنامه، یک فایل موقت ساخته تا خط هایی که توسط کابر وارد می شود در آن ذخیره شود برنامه فایل های موقت را برگردانده و محتویات آن را به صورت استاندارد چاپ می کند.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع tmpfile
FILE *tmpfile(void);ایجاد و باز کردن فایلی موقت با یک نام منحصر به فرد که به صورت خودکار انتخاب می شود.
در صورت استفاده از این تابع، یک فایل باینری درست می شود [با سطح دسترسی "wb+" ( ساختن فایل با قابلیت خواندن و نوشتن )]
فایل موقتی که ساخته شده، بعد از بسته شدن استریم(جریان) یا زمانی که برنامه خاتمه پیدا می کند، به صورت خودکار حذف می شود اگر برنامه به صورت غیر طبیعی خاتمه پیدا کند، این که فایل حذف شود یا خیر، بستگی به سیستم و کتابخانه های مورد استفاده دارد.
🔹مقدار برگشتی :
در صورت اجرای کامل و موفق تابع، یک اشاره گر به فایل موقتی که ساخته شده برمی گرداند و در صورت اجرای ناقص NULL را برمی گرداند.
مثال )
#include <iostream>
#include <stdio.h>
using namespace std;
int main( )
{
char buffer[256];
FILE *pFile;
pFile=tmpfile( );
do {
if(!fgets(buffer,256,stdin))
break;
fputs(buffer,pFile);
} while(strlen(buffer)>1);
rewind(pFile);
while(!feof(pFile))
{
if(fgets(buffer,256,pFile)==NULL)
break;
fputs(buffer,stdout);
}
fclose(pFile);
return 0;
}
این برنامه، یک فایل موقت ساخته تا خط هایی که توسط کابر وارد می شود در آن ذخیره شود برنامه فایل های موقت را برگردانده و محتویات آن را به صورت استاندارد چاپ می کند.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstdio #cstdio.h #tmpnam
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع tmpnam
برگرداندن یک رشته که حاوی اسمی است که با اسم های فایل های موجود متفاوت است، بنابراین برنامه نویس می تواند با خیال راحت از تکراری نبودن اسم فایل، فایل موقت خود را بسازد
اگر رشته ارسالی به عنوان آرگومان، خالی (NUll) باشد رشته حاصل در یک آرایه استاتیک داخلی ذخیره می شود که می تواند با مقدار برگشتی در دسترس قرار بگیرد.
محتوای این رشته حفظ می شود، حداقل تا زمانی که تابع tmpnam صدا زده شود، که ممکن است جایگزین این مقدار ذخیره شده شود.
اگر رشته ارسالی به عنوان آرگومان، خالی نباشد (not a null)،
آن را در آرایه ای که حداقل L_tmpnamکاراکتر دارد با نام های پیشنهاد شده برای فایل های موقت ذخیره می کند.
🔹پارامتر ها :
🔻مفهوم str :
اشاره گری به یک آرایه است که نام های پیشنهادی فایل های موقت به عنوان یک رشته ذخیره شده اند؛
سایز پیشنهادی این آرایه حداقل L_temnam کاراکتر دارد.
🔹مقدار برگشتی :
در صورت اجرا شدن، یک اشاره گر به رشته که شامل یک نام پیشنهادی برای یک فایل موقت است :
🔻اگر مقدار آرگومان خالی باشد؛ به یک بافر خالی اشاره می کند (محتوایی که حداقل تا صدا زدن دوباره تابع حفظ میشود)
🔻اگر مقدار آرگومان خالی نباشد؛ رشته ای که به عنوان آرگومان فرستاده شده برگشت داده می شود (return)
مثال :
این برنامه دو نام متفاوت برای فایل های موقت ایجاد می کند هر یک از آنها توسط یکی از دو روش که در tmpnam می تواند استفاده شود، ایجاد شده است.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵عملیات ورودی/خروجی(cstdio)
🔹تابع tmpnam
char *tmpnam(char *str);برگرداندن یک رشته که حاوی اسمی است که با اسم های فایل های موجود متفاوت است، بنابراین برنامه نویس می تواند با خیال راحت از تکراری نبودن اسم فایل، فایل موقت خود را بسازد
اگر رشته ارسالی به عنوان آرگومان، خالی (NUll) باشد رشته حاصل در یک آرایه استاتیک داخلی ذخیره می شود که می تواند با مقدار برگشتی در دسترس قرار بگیرد.
محتوای این رشته حفظ می شود، حداقل تا زمانی که تابع tmpnam صدا زده شود، که ممکن است جایگزین این مقدار ذخیره شده شود.
اگر رشته ارسالی به عنوان آرگومان، خالی نباشد (not a null)،
آن را در آرایه ای که حداقل L_tmpnamکاراکتر دارد با نام های پیشنهاد شده برای فایل های موقت ذخیره می کند.
🔹پارامتر ها :
🔻مفهوم str :
اشاره گری به یک آرایه است که نام های پیشنهادی فایل های موقت به عنوان یک رشته ذخیره شده اند؛
سایز پیشنهادی این آرایه حداقل L_temnam کاراکتر دارد.
🔹مقدار برگشتی :
در صورت اجرا شدن، یک اشاره گر به رشته که شامل یک نام پیشنهادی برای یک فایل موقت است :
🔻اگر مقدار آرگومان خالی باشد؛ به یک بافر خالی اشاره می کند (محتوایی که حداقل تا صدا زدن دوباره تابع حفظ میشود)
🔻اگر مقدار آرگومان خالی نباشد؛ رشته ای که به عنوان آرگومان فرستاده شده برگشت داده می شود (return)
مثال :
#include <iostream>
#include <stdio.h>
using namespace std;
int main( )
{
char buffer[L_tmpnam];
char *pointer;
tmpnam(buffer);
cout<<"Tempname #1: \n"<<buffer;
pointer=tmpnam(NULL);
cout<<"Tempname #2: \n"<<pointer;
return 0;
}
این برنامه دو نام متفاوت برای فایل های موقت ایجاد می کند هر یک از آنها توسط یکی از دو روش که در tmpnam می تواند استفاده شود، ایجاد شده است.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#cstdio #cstdio.h
📚فهرست آموزش کتابخانه عملیات ورودی/خروجی (cstdio)
♦️توضیحات بیشتر درباره این کتابخانه
t.me/Learncpp/1053
#remove
t.me/Learncpp/1079
#rename
t.me/Learncpp/1111
#tmpfile
t.me/Learncpp/1131
#tmpnam
t.me/Learncpp/1147
📝ترجمه کتابخانه از سایت رسمی برنامه نویسان ++C
www.cplusplus.com
🔸کمک به بچه های سرطانی
💝 @tabligh_cpp
🔹آموزش تخصصی ++C
🛡@Learncpp
📚فهرست آموزش کتابخانه عملیات ورودی/خروجی (cstdio)
♦️توضیحات بیشتر درباره این کتابخانه
t.me/Learncpp/1053
#remove
t.me/Learncpp/1079
#rename
t.me/Learncpp/1111
#tmpfile
t.me/Learncpp/1131
#tmpnam
t.me/Learncpp/1147
📝ترجمه کتابخانه از سایت رسمی برنامه نویسان ++C
www.cplusplus.com
🔸کمک به بچه های سرطانی
💝 @tabligh_cpp
🔹آموزش تخصصی ++C
🛡@Learncpp
Telegram
Learning ©➕➕
#cstdio #cstdio.h
🔵عملیات ورودی/خروجی(cstdio)
🔴کتابخانه cstdio
می توان با استفاده از کتابخانه های ورودی و خروجی استاندارد [c standard input and output (cstdio)] سی پلاس پلاس که حاوی مجموعه ای از امکانات ورودی/خروجی است؛ عملیات های ورودی و خروجی را انجام…
🔵عملیات ورودی/خروجی(cstdio)
🔴کتابخانه cstdio
می توان با استفاده از کتابخانه های ورودی و خروجی استاندارد [c standard input and output (cstdio)] سی پلاس پلاس که حاوی مجموعه ای از امکانات ورودی/خروجی است؛ عملیات های ورودی و خروجی را انجام…
🔸ترجمه کتابخانه "time (زمان)" از سایت رسمی برنامه نویسان ++C به آدرس
www.cplusplus.com/reference
@Learncpp
www.cplusplus.com/reference
@Learncpp
#ctime #time.h #mktime
🔵زمان (time)
🔹تابع mktime
این دقیقا برعکس تابع localtime است، ما به این تابع یک زمان استاندارد می دهیم و این تابع می گوید که این زمان از چند ثانیه تشکیل شده است.
🔹پارامتر ها :
🔻مفهوم timeptr* :
یک اشاره گر به زمان استانداردی که از نوع struct tm است.
🔹مقادیر بازگشتی :
اگر تابع بتواند کارش را درست انجام بدهد یک مقدار از نوع time_t بر می گرداند و اگر نتواند مقدار منفی یک(1-) را بر می گرداند.
در مثال بالا ابتدا زمان غیر استاندارد سیستم را می گیریم سپس آن را به زمان استاندارد تبدیل می کنیم سپس دوباره آن را به زمان غیر استاندارد تبدیل می کنیم.
Output:
Enter year: 2000
Enter month: 5
Enter day: 20
That day is a Saturday.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵زمان (time)
🔹تابع mktime
time_t mktime(struct tm *timeptr);این دقیقا برعکس تابع localtime است، ما به این تابع یک زمان استاندارد می دهیم و این تابع می گوید که این زمان از چند ثانیه تشکیل شده است.
🔹پارامتر ها :
🔻مفهوم timeptr* :
یک اشاره گر به زمان استانداردی که از نوع struct tm است.
🔹مقادیر بازگشتی :
اگر تابع بتواند کارش را درست انجام بدهد یک مقدار از نوع time_t بر می گرداند و اگر نتواند مقدار منفی یک(1-) را بر می گرداند.
#include <iostream>
#include <ctime>
using namespace std;
int main ( )
{
time_t tim;
tm *stim;
time(&tim);
stim = localtime(&tim);
tim=mktime(stim);
cout<<tim<<endl;
return 0;
}
در مثال بالا ابتدا زمان غیر استاندارد سیستم را می گیریم سپس آن را به زمان استاندارد تبدیل می کنیم سپس دوباره آن را به زمان غیر استاندارد تبدیل می کنیم.
#include <iostream>
#include <time.h>
/*time_t,struct tm,time,mktime*/
using namespace std;
int main ( )
{
time_t rawtime;
struct tm *timeinfo;
int year,month,day;
const char *weekday[ ]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
/* prompt user for date */
cout<<"Enter year: ";
fflush(stdout);
cin>>year;
cout<<"Enter month: ";
fflush(stdout);
cin>>month;
cout<<"Enter day: ";
fflush(stdout);
cin>>&day;
/*get current timeinfo and modify it to the user's choice*/
time(&rawtime);
timeinfo=localtime(&rawtime);
timeinfo->tm_year=year-1900;
timeinfo->tm_mon=month-1;
timeinfo->tm_mday=day;
/*call mktime: timeinfo->tm_wday will be set*/
mktime(timeinfo);
cout<<"That day is a \n"<<weekday[timeinfo->tm_wday];
return 0;
}
Output:
Enter year: 2000
Enter month: 5
Enter day: 20
That day is a Saturday.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#ctime #time.h #time
🔵زمان (time)
🔹تابع time
این تابع زمان فعلی سیستم را داخل متغیری که ما مشخص می کنیم قرار می دهد ولی این تابع زمان را بر حسب ثانیه بر می گرداند.
یعنی مثلا اگر زمان فعلی سیستم 00:02:34 باشد این تابع مقدار 153 را بر می گرداند به این دلیل که زمان دو دقیقه و سی و چهار ثانیه از 153 ثانیه تشکیل شده است.
حال باید با استفاده از تابع localtime و یک متغیر دیگر(که یک struct از نوع tm هست) به زمان استاندارد آن را تبدیل کنیم.
🔹پارامتر ها :
🔻مفهوم timer* :
این همان اشاره گر ازنوع time_t هست که می خواهیم زمان را داخل آن نگه داریم.
🔹مقادیر بازگشتی :
اگر تابع بتواند زمان را بگیرد تعداد ثانیه هایش را بر می گرداند ولی اگر نتواند مقدار منفی یک (1-) را بر می گرداند.
Output :
1742940573
این برنامه ابتدا یک متغیر از نوع time_t تعریف می کند بعد آدرس آن را (منظور یک اشاره گر به جایی که tim داخلش ذخیره شده) به تابع time می دهد.
این تابع هم زمان را بر حسب ثانیه داخل جایی که tim اشاره می کند قرار می دهد سپس آن نمایش می دهد.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵زمان (time)
🔹تابع time
time_t time (time_t* timer);این تابع زمان فعلی سیستم را داخل متغیری که ما مشخص می کنیم قرار می دهد ولی این تابع زمان را بر حسب ثانیه بر می گرداند.
یعنی مثلا اگر زمان فعلی سیستم 00:02:34 باشد این تابع مقدار 153 را بر می گرداند به این دلیل که زمان دو دقیقه و سی و چهار ثانیه از 153 ثانیه تشکیل شده است.
حال باید با استفاده از تابع localtime و یک متغیر دیگر(که یک struct از نوع tm هست) به زمان استاندارد آن را تبدیل کنیم.
🔹پارامتر ها :
🔻مفهوم timer* :
این همان اشاره گر ازنوع time_t هست که می خواهیم زمان را داخل آن نگه داریم.
🔹مقادیر بازگشتی :
اگر تابع بتواند زمان را بگیرد تعداد ثانیه هایش را بر می گرداند ولی اگر نتواند مقدار منفی یک (1-) را بر می گرداند.
#include <iostream>
#include <ctime>
using namespace std;
int main( )
{
Time_t tim;
Time(&tim);
cout<<tim<<endl;
}
Output :
1742940573
این برنامه ابتدا یک متغیر از نوع time_t تعریف می کند بعد آدرس آن را (منظور یک اشاره گر به جایی که tim داخلش ذخیره شده) به تابع time می دهد.
این تابع هم زمان را بر حسب ثانیه داخل جایی که tim اشاره می کند قرار می دهد سپس آن نمایش می دهد.
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
#ctime #time.h #clock
🔵زمان (time)
🔹تابع clock
آیا دوست دارید بدانید برنامه تان چند ثانیه برای اجرا زمان گرفته است ؟؟؟
این تابع به این صورت کار می کند که زمان سپری شده توسط CPU که برای برنامه ی شما مصرف شده را بر می گرداند ولی مقداری که این تابع بر می گرداند بر حسب clock_t هست.
🔹مقادیر بازگشتی :
تابع اگر بتواند زمان را محاسبه کند یک عدد در قالب clock برای ما می فرستد اگر نتواند مقدار منفی یک (1-) را بر می گرداند.
⚠️ ممکن است شما یک برنامه را روی چند تا کامپیوتر تست کنید اگر جواب های مختلف گرفتید تعجب نکنید چون ممکن است سرعت پردازنده ها با هم فرق کند یا اگر روی دو کامپیوتر کاملا مشابه در دو محیط مختلف تست کردید و جواب متفاوتی دیدید ممکن است شرایط محیطی روی کار پردازنده تاثیر گذاشته باشد...
Output :
1001
در خط 8 حلقه اعداد 0 تا 9999 را چاپ می کند تا زمانی تلف شود.
در خط 12 زمان را داخل متغیر clk قرار می دهیم و سپس آن چاپ می کنیم.
اما همان طور که می بینید یک عدد بر می گرداند که امکان ندارد زمان برنامه باشد یعنی یک حلقه ی کوچک 1001 ثانیه طول می کشد ؟؟؟
خوب پس چطوری به یک عدد معقول تبدیلش کنیم ؟؟؟
برای این کار باید clk را به یک عدد float تبدیل کنیم بعد بر ثابت CLOCKS_PER_SEC تقسیمش کنیم.
برای درک بهتر به مثال پایین توجه کنید:
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp
🔵زمان (time)
🔹تابع clock
clock_t clock(void);آیا دوست دارید بدانید برنامه تان چند ثانیه برای اجرا زمان گرفته است ؟؟؟
این تابع به این صورت کار می کند که زمان سپری شده توسط CPU که برای برنامه ی شما مصرف شده را بر می گرداند ولی مقداری که این تابع بر می گرداند بر حسب clock_t هست.
🔹مقادیر بازگشتی :
تابع اگر بتواند زمان را محاسبه کند یک عدد در قالب clock برای ما می فرستد اگر نتواند مقدار منفی یک (1-) را بر می گرداند.
⚠️ ممکن است شما یک برنامه را روی چند تا کامپیوتر تست کنید اگر جواب های مختلف گرفتید تعجب نکنید چون ممکن است سرعت پردازنده ها با هم فرق کند یا اگر روی دو کامپیوتر کاملا مشابه در دو محیط مختلف تست کردید و جواب متفاوتی دیدید ممکن است شرایط محیطی روی کار پردازنده تاثیر گذاشته باشد...
1. #include <iostream>
2. #include <ctime>
3. using namespace std;
4. int main( )
5. {
6. clock clk;
7. for(int i=0;i<=9999;i++)
8. {
9. cout<<i<<endl;
10. }
11. clk=clock( );
12. cout<<clk<<endl;
13. return 0;
14. }
Output :
1001
در خط 8 حلقه اعداد 0 تا 9999 را چاپ می کند تا زمانی تلف شود.
در خط 12 زمان را داخل متغیر clk قرار می دهیم و سپس آن چاپ می کنیم.
اما همان طور که می بینید یک عدد بر می گرداند که امکان ندارد زمان برنامه باشد یعنی یک حلقه ی کوچک 1001 ثانیه طول می کشد ؟؟؟
خوب پس چطوری به یک عدد معقول تبدیلش کنیم ؟؟؟
برای این کار باید clk را به یک عدد float تبدیل کنیم بعد بر ثابت CLOCKS_PER_SEC تقسیمش کنیم.
برای درک بهتر به مثال پایین توجه کنید:
cout<<((float)clk)/ CLOCKS_PER_SEC<<endl;1. #include <iostream>
2. #include <ctime>
3. using namespace std;
4. int main( )
5. {
6. clock clk;
7. for(int i=0; i<=999; i++)
8. {
9.// دستورات
10. }
11. clk=clock( );
12. for(int j=0;j<=99999;j++)
13. {
14.// دستورات
15. }
16. clk=clock( )–clk;
17. cout<<((float)clk)/CLOCKS_PER_SEC<<endl;
18. return 0;
19. }
🔰ترجمه شده از سایت
www.cplusplus.com
@Learncpp