مشکل کار با String یا رشته ها در برنامه Borland C++ و رفع این مورد با جهش به برنامه Visual C++ :
همانطور که در ابتدای مجموعه آموزش برنامه نویسی C++ خدمت شما عزیزان عرض شد ما برنامه های خود را در محیط نرم افزار Borland C++ آموزش دادیم. متاسفانه این نسخه از کامپایلر C++ رشته ها را پشتیبانی نمی کند و برای کار با رشته ها مثل اسامی، جملات و ... ما مجبور به نوشتن کدهای فراوانی خواهیم بود و بدلیل اینکه از این به بعد مطالب سنگین تر و مفهومی خواهد شد لذا تصمیم گرفتم که این مشکل را با استفاده از تابع کتابخانه ای std که در دیگر نسخه های C++ پشتیبانی می شود را رفع نمایم .
در اینجا من 2 مثال را مورد بررسی قرار می دهم تا عزیزان بتوانند در مواردی که نمی توانند از کتابخانه std استفاده کنند از آرایه ای از کاراکترها برای دسترسی و کار با رشته ها و برنامه نویسی در محیط Borland C++ استفاده نمایند .
مثال1) کار با رشته ها بدون استفاده از فایل سرآیند یا کتابخانه std، به کمک آرایه ای از کاراکترها در برنامه نویسی C++ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| |
#include <iostream.h>
#include <conio.h>
class Employee
{
public:
char m_strName[25];
int m_nID;
double m_dWage;
void SetInfo(char *strName, int nID, double dWage)
{
strncpy(m_strName, strName, 25);
m_nID = nID;
m_dWage = dWage;
}
void Print()
{
cout << "Name: " ;
for(int i=0;m_strName[i];i++)
{
cout << m_strName[i];
}
cout << " Id: " << m_nID << " Wage: $" << m_dWage << endl;
}
};
int main()
{
Employee cAlex;
cAlex.SetInfo("Alex", 1, 25.00);
Employee cJoe;
cJoe.SetInfo("Joe", 2, 22.25);
cAlex.Print();
cJoe.Print();
getch();
return 0;
}
|
Name: Alex Id: 1 Wage: $25.00
Name: Joe Id: 2 Wage: $2.25
مثال2) کار با رشته ها با استفاده از فایل سرآیند یا کتابخانه std، برای راحتی و سهولت در برنامه نویسی C++ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 35
| |
#include <iostream.h>
#include <conio.h>
using namespace std;
class Employee
{
public:
char m_strName[25];
int m_nID;
double m_dWage;
void SetInfo(char *strName, int nID, double dWage)
{
strncpy(m_strName, strName, 25);
m_nID = nID;
m_dWage = dWage;
}
void Print()
{
cout << "Name: " << m_strName << " Id: " << m_nID << " Wage: $" << m_dWage << endl;
}
};
int main()
{
Employee cAlex;
cAlex.SetInfo("Alex", 1, 25.00);
Employee cJoe;
cJoe.SetInfo("Joe", 2, 22.25);
cAlex.Print();
cJoe.Print();
getch();
return 0;
}
|
Name: Alex Id: 1 Wage: $25.00
Name: Joe Id: 2 Wage: $2.25
همانطور که ملاحظه می فرمایید هر دو کد برنامه نویسی C++ بالا یک عمل را انجام می دهند با این تفاوت که در کد اول از فایل سرآیند std در برنامه استفاده نشده است لذا برای کار با رشته ها چند خط کد به تابع print در سطر 18 اضافه می شود، ولی در کد دوم ما از فایل سرآیند استفاده نمودیم که کتابخانه ای است برای شناسایی و سهولت کار با رشته ها در برنامه نویسی C++ .
چنانچه می بینید برای کار با رشته ها در محیط نرم افزار Borland C++ ما مجبور می شویم که با استفاده از تعریف آرایه ای از کاراکترها با متغیرهای رشته ای کار کنیم اما در نرم افزار Visual C++ بدلیل پشتیبانی از کتابخانه از پیش تعریف شده std، دیگر نیازی به آرایه نیست و مستقیما می توان با رشته ها کار کرد .
عزیزان دقت کنند که برای دریافت رشته ها هم بدون فضای کاری (namespace) نیز باید از آرایه ای از کاراکترها استفاده نمایند که پیشتر مفصلا در مبحث رشته ها این مورد آموزش داده شده است .
پس از این به بعد برای سهولت کار با زبان برنامه نویسی C++ و تمرکز بیشتر بر روی آموزش مطالب و دستورات مهمتر و جدید ما از فضای کاری std بهره می بریم تا حجم کدها کاهش پیدا نماید و شرایط جهت آنالیز و آموزش بهتر فراهم گردد، که در صورت نیاز عزیزان به کدنویسی در نرم افزار Borland C++، این مطلب کمکی باشد برای رفع این جابجایی فقط کافیست که این دو مثال را با یکدیگر مقایسه نمایید .