امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
سوال درمورد API , پیوند رشته ها , کار با فایل
نویسنده پیام
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #1
سوال درمورد API , پیوند رشته ها , کار با فایل
با سلام به دوستان عزیز

سه سوال برام پیش اومده که اگر دوستان پاسخ بدن ممنون می شم

1. طرز استفاده از یک تابع API ساده مثل Sleep در VC++6 چگونه است
2. چگونه می توان رشته ها را بهم پیوند زد ( مثل & در VB )
3.طریقه نوشتن و خواندن کلمه در فایل با استفاده از هدرهای istream.h ,
ostream.h چگونه است ( اگر با fstream می شه اون رو هم لطفآ توضیح بدید )

با تشکر از دوستان
(آخرین ویرایش در این ارسال: ۰۳-خرداد-۱۳۸۵, ۱۳:۲۶:۵۹، توسط Iron_Fist.)
۰۳-خرداد-۱۳۸۵, ۱۲:۵۲:۱۵
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #2
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
آقا سلام

طرز استفاده از یک تابع API ساده مثل Sleep در VC++6 چگونه است :

کد:
#include <windows.h>

void main()
{

    Sleep(500);
}
--------------------------------------------------------------------
2-چگونه می توان رشته ها را بهم پیوند زد ( مثل & در VB )

در زبان سی چون رشته ها مختوم به null یا به عبارتی null terminated هستند نمیشه مثل وی بی با عملگر های + یا & اونها رو بهم چسبونده . در واقع توی زبان سی تابعی با نام strcat در هدر فایل string.h تعریف شده که می تونه اینکار رو برات انجام بده !
اما اگر بازهم دلت میخواد که با عملگر هایی مثل + یا & ، دو تا رشته رو بهم بچسبونی باید از زبان ++C و از قابلیتی با نام operator overloading ( بازنویسی عملگرها ) در این زبان استفاده کنی . در واقع شما میای یه کلاس از نوع string طراحی می کنی و توی اون عملگر های + یا & رو طوری overload می کنی که برات عمل concatenation یا همون چسبوندن رشته ها رو انجام بده . این بحث در زبان ++C بسیار مهم و مفصله ! اگر نیاز داشتی بگو برات مثالش رو بزنم ولی من توصیه می کنم زبان ++C رو از پایه بشین و یاد بگیر چون مبحث operator overloading یکی از واجبات این زبانه !
--------------------------------------------------------------------------------
3-طریقه نوشتن و خواندن کلمه در فایل با استفاده از هدرهای istream.h ,
ostream.h چگونه است

باید بدونیم هدر istream.h کلاس های خواندن و هدر ostream.h کلاس های نوشتن رو شامل میشه ! اما هدر iostream.h هر دوی اینها رو شامل میشه .

اما برای کار با فایل ، کلاس موجود در هدر های fstream.h و  ofstream.h و ifstream که از کلاس های بالا مشتق میشن بکار گرفته میشن .
fstream.h  هر دو قابلیت رو داره اما اون دوتای دیگه ، قابلیت های نوشتن و خوندن رو جداگانه کپسوله کردند ! اینم یه برنامه ساده که یه عدد رو توی یه فایل ذخیره می کنه :

کد:
#include <iostream.h>
#include <fstream.h>

void main()
{

    ofstream outf("c:\myfile.txt");
    int num;
    if(!outf)
        cout << "cannot open the file";
    
    cout << "Enter your number :";
    cin >> num;
    
    outf << num << endl;
    outf.close();

}






گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
(آخرین ویرایش در این ارسال: ۰۴-خرداد-۱۳۸۵, ۰۱:۱۸:۱۰، توسط Mamad2003.)
۰۳-خرداد-۱۳۸۵, ۱۷:۴۶:۱۲
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #3
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
ممد جان سلام
از اينکه وقتت رو در اختيار من گذاشتي ممنونم

من وقتي کدي که براي تابع sleep بهم دادي رو وارد مي کنم سي ++ اين ارور رو بهم ميده
--------------------Configuration: Test - Win32 Debug--------------------
Compiling...
Test.cpp
E:\Test\Test.cpp(6) : error C2065: 'sleep' : undeclared identifier
Error executing cl.exe.

Test.exe - 1 error(s), 0 warning(s)
و وقتي کد مربوط به کار با فايل رو ميدم سي ++ اين ارور رو ميده
--------------------Configuration: Test - Win32 Debug--------------------
Compiling...
Test.cpp
e:\test\test.cpp(7) : warning C4129: 'm' : unrecognized character escape sequence
e:\test\test.cpp(9) : error C2065: 'out' : undeclared identifier
Error executing cl.exe.

Test.exe - 1 error(s), 1 warning(s)
من اين کدها رو تو مد کنسول وارد مي کنم آيا ربطي داره

در مورد operator overloading هم فقط در هد مفهومش بلدم و اگه لطف کني اين رو هم توضيح
بدي ممنونت مي شم
۰۳-خرداد-۱۳۸۵, ۲۱:۵۶:۲۴
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
آقا سلام . شرمنده من این کد ها رو تند تند نوشته بودم برای همین اون مشکلات تایپی توش پیش اومد !
تابع Sleep حرف S اولش بزرگه ( Caps ) . اون sleep رو به Sleep تغییر بدی حله !
توی یکی از خط های برنامه دوم هم من نوشته بودم (if (!out که باید نوشته میشد (if (!outf  تا برنامه دوم هم کامپایل بشه !
همون بالا هر دو رو تصحیح کردم !

درباره operator overloading :

یکی از رکنهای اساسیه زبان ++C همون شی و کلاس هستند . در واقع شما یک کلاس رو تعریف می کنی تا بتونی تعدادی شی رو از جنس همون کلاس بسازی .
همینطور می دونیم عملگر های زبان ++C مثل + یا - یا * یا ..... روی عملوند هایی از نوع متغیر  بخوبی کار می کنند . می تونیم دوتا متغیر مثلا از نوع int رو با هم جمع کنیم یا از هم کم کنیم . مثال

کد:
[align=left]
int x,y,z
x = y + z - x[/align]

در اینحا هر سه متغیرهایی از نوع int هستند و برای کامپایلر کاملا شناخته شده !

ولی اگر عملوند ما شیی از یک کلاس بود چطور ؟؟ در این حالت مثلا عملگر  + برای شی ما (یا به عبارتی همون کامپایلر ++C ) ناشناخته و تعریف نشده است ! زبان ++C به ما این امکان رو میده که نحوه  برخورد کامپایلر هنگامی که یک عملوند به شکل یک شی ظاهر میشه رو مشخص کنیم . مثال :

کد:
[align=left]class num
{
    public : int digit ;
};

num x,y,z;[/align]
    

در کد بالا x , y و z شی هایی از کلاس num هستند و متغیر نیستند ! پس نوشتن عبارت x = y + z - x توسط کامپایلر خطا محسوب خواهد شد چرا که شما هیچ کدوم از عملگرهای + و - رو برای کلاس خودتون تعریف نکردید و کامپایلر نمی تونه بفهمه باید با شی شما چطور برخورد بکنه !

کد زیر برنامه ای هست که دوتا string رو با عملگر + بهم می چسبونه با کمک بازنویسی عملگر ها :

کد:
[align=left]#include <iostream.h>
#include <string.h>

class String
{
  
    public :
           
       char str[20];

  
      
       String  operator+(String ss)
       {
        
        String temp;
        strcpy(temp.str, str);
        strcat(temp.str, ss.str);

        return temp;
       }

       String(char* s="\0")
       {
            strcpy(str,s);
       }


        
      
};      

void main()
{

   String s1 = "Mamad";             
   String s2 = "2003 ";  
  

   String s3;
  
   s3 = s1 + s2;
      
   cout << s3.str ;

  

}[/align]

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۰۴-خرداد-۱۳۸۵, ۰۱:۱۸:۱۹
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #5
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
ممد جان زحمت کشیدی
خیلی ممنون . جوابات خیلی با حال بود
دارم رو operator overloading کار می کنم
(آخرین ویرایش در این ارسال: ۰۴-خرداد-۱۳۸۵, ۱۴:۴۰:۱۷، توسط Iron_Fist.)
۰۴-خرداد-۱۳۸۵, ۱۴:۳۸:۵۵
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #6
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
ممد جان هر چی به این کد operator overloading نگاه می کنم
چیزی متوجه نمی شم ( مخصوصآ Temp )
اگه یه مقدار توضیح بدی ممنون می شم
۱۰-خرداد-۱۳۸۵, ۱۱:۴۸:۰۹
ارسال‌ها
پاسخ
Programmer آفلاین
كاربر دو ستاره
**

ارسال‌ها: 79
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۵

تشکرها : 2
( 23 تشکر در 9 ارسال )
ارسال: #7
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
Iron_Fist فکر میکنم جواب 2 سوال اولت رو گرفتی و حالا در مورد سوال سوم :

میدونی با فایلها در 2 حالته متنی و binary می شود کار کرد برای حالت متنی به کد زیر تو جه کن:
کد:
#include <fstream>
#include <iostream>

using namespace std;

int main(int argc, char* argv[], char** env)
{
    fstream l_stmOut("My Letter.txt", ios_base::out | ios_base::trunc);
    l_stmOut << "Sallam alykom barobache haye iranvichy chetorid?!" << endl;
    l_stmOut.close();

    fstream l_stmIn("My Letter.txt", ios_base::in);
    cout << l_stmIn.rdbuf() << endl;
    l_stmIn.close();

    return 0;
}

و برای حالت binary به این کد نگاه کن بسیار ساده و جالب است
از روش کار C++ با فایلها خیلی خوشم می آد!
کد:
#include <fstream>
#include <iostream>

using namespace std;

int main(int argc, char* argv[], char** env)
{
    int l_intX = 126;

    fstream l_stmOut("My Letter.txt", ios_base::out | ios_base::trunc | ios_base::binary);
    l_stmOut << l_intX;
    l_stmOut.close();

    fstream l_stmIn("My Letter.txt", ios_base::in | ios_base::binary);
    l_stmIn >> l_intX;
    l_stmIn.close();

    cout << "X = " << l_intX << endl;

    return 0;
}

می دونی که برای خواندن و نوشتن اشیا یا متغییر ها معمولا از روش binary استفاده می شود.

سعید ت Cool
۲۷-مرداد-۱۳۸۵, ۰۲:۱۷:۴۱
وب سایت ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #8
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
آقا سعید دستت درست . مثال ها خیلی مفید هستند

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۷-مرداد-۱۳۸۵, ۱۴:۱۲:۱۰
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #9
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
دستت شما درد نکنه . ممنون
۲۷-مرداد-۱۳۸۵, ۱۴:۲۸:۲۱
ارسال‌ها
پاسخ
fonqri آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: اسفند ۱۳۹۳

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #10
RE: سوال درمورد API , پیوند رشته ها , کار با فایل
سلام ببخشید تابعی هست که کل دستورات رو متوقف نکنه و فقط وقفه ایجاد کنه؟
مثلا برای ساخت تایمر کنار یه بازی
و یه سوال دیگه من میخوام بازی مار رو بنویسم چطور میتونم کاری کنم که مار حرکت کنه تا زمانی که کاربر کاراکتر وارد کنه؟ یعنی تا زمانی که کاربر کاراکتر وارد نکرده به حرکت ادامه بده
ممنون میشم زودجواب بدید
با تشکرWhistle
۰۵-اسفند-۱۳۹۳, ۱۹:۲۷:۵۴
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [فوری] کمک در جدا سازی آرایه و رشته imanhelmi 1 2,897 ۲۴-خرداد-۱۳۹۳, ۱۸:۴۱:۵۲
آخرین ارسال: vigraz
  [سوال] چجوری میشه فهمید یک رشته متقارن هست ؟ IT.M@N 2 3,138 ۲۴-اردیبهشت-۱۳۹۰, ۲۲:۵۱:۱۳
آخرین ارسال: IT.M@N
  [سوال] تخصیص حافظه به رشته و ارسال به تابع؟ one hacker 2 3,268 ۰۶-اردیبهشت-۱۳۹۰, ۱۷:۲۸:۲۲
آخرین ارسال: one hacker
  مشکل با رشته ها babyy 8 6,234 ۰۳-بهمن-۱۳۸۷, ۲۰:۳۹:۴۱
آخرین ارسال: babyy
  یک سوال در باره رشته ها در C Pacificsys 1 2,586 ۲۶-دى-۱۳۸۵, ۰۲:۱۰:۲۸
آخرین ارسال: hamiddakal

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS