View Full Version : تبدیل رشته به کاراکتر
moonDark
دوشنبه 06 شهریور 1391, 19:33 عصر
سلام من میخاستم بدونم که آیا راهی هست که بشه یه رشته رو به char* تبدیل کرد؟
مثلا این رشته که توی system هست باید از نوع کاراکتر باشه ولی من نمیدونم باید چه طوری تبدیل کنم
string a;
char* b,c;
a = b, c;
system(a);
tdkhakpur
دوشنبه 06 شهریور 1391, 19:48 عصر
رشته خودش اشاره گر کاراکترهاست
String a;
char *ptr;
ptr = &a[0];
moonDark
دوشنبه 06 شهریور 1391, 19:58 عصر
میدونم ولی اون دستوری رو که بالا نوشتم مشکل داره موقع اجرا کنسول ارور میده
tdkhakpur
دوشنبه 06 شهریور 1391, 20:02 عصر
میدونم ولی اون دستوری رو که بالا نوشتم مشکل داره موقع اجرا کنسول ارور میده
اینو امتحان کن.
String a="111";
char *ptr;
ptr = a.c_str();
moonDark
دوشنبه 06 شهریور 1391, 20:10 عصر
من تو یه سایتی همین روشو دیدم ولی جواب نداد
اشکال نداره اگه کل کد برنامه رو بزارم ببینی مشکلش چیه؟
tdkhakpur
دوشنبه 06 شهریور 1391, 21:28 عصر
کد رو ارسال کن.
من نباشیم از دوستان دیگه میتونه جواب بده
moonDark
سه شنبه 07 شهریور 1391, 18:44 عصر
این سورس برنامه هست مشکل من با تابع win32_menu::setWin و تابع detectColor هست
tdkhakpur
سه شنبه 07 شهریور 1391, 20:17 عصر
این سورس برنامه هست مشکل من با تابع win32_menu::setWin و تابع detectColor هست
برنامه شما رو دیدم میشه در مورد کارش یه مقدار توضیح بدید میخایید چیکار کنید؟
void win32_menu::setWin(char* sysBarTitle, mnuColor backColor, mnuColor foreColor, char* columns, char* lines)
{
char winSize[256];
char* winColor;
char winTitle[256];
winColor = detectColor(backColor,foreColor);
strcpy(winSize, "mode con:cols=");
strcat(winSize, columns);
strcat(winSize, " lines=");
strcat(winSize, lines);
strcpy(winTitle, "title = ");
strcat(winTitle, sysBarTitle);// man tu in shak daram
cout << "\n\n" << winSize << "\n\n"; // in vase teste ke moghe run mibinin chi minevise
system(winTitle);
system(winSize);
system(winColor);
}
ایراد کاری نداره فقط میمونه الگوریتم کار که باید مشخص کنید میخاد چه کار انجام بده.
moonDark
سه شنبه 07 شهریور 1391, 21:55 عصر
من برای راحتی کار تصمیم گرفتم یه کلاس بنویسم که با یکی دوتا تابع به برنامه win32 منو اضافه کنه بجای اینکه کلی با cout کد بنویسم و حتی باهاش بشه رنگ و سایز و اسم فرم کنسول رو هم عوض کرد که توی همین تابع که آقای tdkhakpur گذاشتن میبینین ولی مشکل من اینجاس که هیچ کامپایلری از این کدها ایراد نمیگیره و فقط موقع اجرا خودشو نشون میده مثلا
strcpy(winSize, "mode con:cols=");
strcat(winSize, columns);
strcat(winSize, " lines=");
strcat(winSize, lines);
و
system(winSize);
باید سایز فرم رو به صورت
mode con:cols=char* columns lines=char* lines تغییر بده که من بجای int از char* استفاده کردم وگرنه ارور میداد و منم حوصله تبدیل رو ندارم!
ولی این کار انجام نمیشه و همون طوری که cout << "\n\n" << winSize << "\n\n"; نشون میده باید کد دقیق تغییر سایز رو نشون بده ولی به جاش چیزای دیگه نشون میده که همینم باعث میشه دستور کار نکنه
دو دستور system دیگه هم همین وضعیتو دارن و تنها مشکل برنامه همین چند خط کده که حسابی اعصابمو ریخته بهم
اگه متوجه نشدین به بزرگی خودتون ببخشید
tdkhakpur
سه شنبه 07 شهریور 1391, 22:32 عصر
دستوری که به system تو این خط اخری که دادی اشتباه
system(winColor);
به همین خاظر اونجا اررور میده.
در ضمن برای چاپ
cout << "\n\n" << winSize << "\n\n";
اون رو بعد از system قرار بده تا بعد از تنظیمات صفحه نمایش رفرش بشه.void win32_menu::setWin(char* sysBarTitle, mnuColor backColor, mnuColor foreColor, char* columns, char* lines)
{
char winSize[256];
char winColor[256];
char winTitle[256];
strcpy(winColor, "color ");
strcat(winColor, detectColor(backColor,foreColor));
strcpy(winSize, "mode con:cols=");
strcat(winSize, columns);
strcat(winSize, " lines=");
strcat(winSize, lines);
strcpy(winTitle, "title = ");
strcat(winTitle, sysBarTitle);// man tu in shak daram
// cout << "\n\n" << winSize << "\n\n"; // in vase teste ke moghe run mibinin chi minevise
system(winTitle);
system(winSize);
system(winColor);
}
moonDark
سه شنبه 07 شهریور 1391, 22:40 عصر
پیغام خطا میده حتی جدا هم بنویسم بازم خطا میده
اینم مثل همونه ولی خطا میده:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
char *col,*lin;
char size[256];
cout << "enter the columns and lines:(first columns - space - lines)\n";
cin >> col >> lin;
strcpy(size,"mode con:cols=");
strcat(size,col);
strcat(size," lines=");
strcat(size,lin);
//cout << endl << size << endl;
system(size);
return 0;
}
tdkhakpur
سه شنبه 07 شهریور 1391, 22:45 عصر
ببین اینی که تعریف کردی درست نیست
char *col,*lin;
هر اشاره گر که تعریف میشه یا باید فضا بهش بدی یا قبلا چیز ثابتی بهش داده باشی این شکلی فضا رو عوض کن
char col[20], lin[128];
moonDark
سه شنبه 07 شهریور 1391, 22:51 عصر
oOOOooOOOooOOOooo مرسی مشکل حل شد خیلی از کمکتون ممنونم جای 10000 بار تشکر داره یکی کمه تنها مشکل برنامم همین بود (شاید بازم مشکل پیدا شه!)
پس همه اشاره گر ها باید مقدار داشته باشن؟
من یه کتاب دارم learn cpp in 21 days کامل توضیح داده ولی هیچی نه از pointer نه از refrence ها فهمیدم!
soorena
پنج شنبه 09 شهریور 1391, 15:00 عصر
ببین اینی که تعریف کردی درست نیست
1
char *col,*lin;
هر اشاره گر که تعریف میشه یا باید فضا بهش بدی یا قبلا چیز ثابتی بهش داده باشی این شکلی فضا رو عوض کن
1
char col[20], lin[128];
سلام
یا میتونی به صورت اشاره گر تعریف کنی و بعد با استفاده از اپراتور new فضا به اونها اختصاص بدی
char * col;
col=new char [100];
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.