نمایش نتایج 1 تا 5 از 5

نام تاپیک: یه مشکل اساسی در مورد template

  1. #1

    Unhappy یه مشکل اساسی در مورد template

    من یه برنامه دارم که با template سربار گذاری شده.حالا واسه همه نوع داده جواب میده جز نوع داده ی char * مگر این نوع داده برای اون سربار گذاری نشده!در واقع عمل مقایسه کردنه که چون فکر میکنم template همون == رو واسه رشته به عنوان strcmp در نظر بگیره...اما این کارو نمی کنه !! تو رو خدا یکی بگه چه کار کنم!

  2. #2

    نقل قول: یه مشکل اساسی...یکی توروخدا کمک کنه

    سلام ، مفهوم تساوی برای دو عدد اعشاری و دو رشته یکی

    نیست .

    تابعی برای مقایسه دو رشته :


    #include <iostream>
    #include <conio>
    #include <string>
    bool Equal(char a[],char b[]){
    int k=0;
    for(int i=0;i<strlen(a);i++){
    if(a[i] == b[i])
    k++;
    }
    if(k==strlen(a))
    return true;
    else
    return false;
    }






  3. #3

    نقل قول: یه مشکل اساسی در مورد template

    نوع داده char* یه اشاره گر هستش به نوع داده ای سی هستش. و عملگر == برای اونها (رشته های متنهای با صفر) ساخته نشده. اگر شما میخوایید از رشته ها داخل سی ++ استفاده کنن بهتره از کلاسهای مربوطه مثل std::string استفاده کنین که این عملگر برای اون پیاده سازی شده. توجه بکنین که template ها از عملگر مساوی برای همه نوع داده استفاده میکنن./

  4. #4

    نقل قول: یه مشکل اساسی در مورد template

    ممنون از جوابتون.اما رشته مگر یه نوع داده حساب نمیشه!! تازه من که نمی دونم داده ای که واسه یه سری از عملیت به یه تابع قالبی اومده رشته هست یا نوع داده ی دیگر... سربار گذاری مساوی برای رشته بر عهده ی template است نه من!!!

  5. #5

    نقل قول: یه مشکل اساسی در مورد template

    [quote=CppBuilder2006;772008]فکر میکنم برنامه ای دنبالش هستید این باشد:

    [code]
    #include <conio.h>
    #include <iostream>
    using namespace std;

    template <typename T>
    bool Equal(T a,T b)
    {
    if(typeid(T).name() == typeid(char*).name())
    {
    int k=0;
    for(unsigned i = 0; i < strlen(a);i++)
    {
    if(a[i] == b[i])
    k++;
    }
    if(k==strlen(a))
    return true;
    return false;
    }
    else
    return a == b;
    }

    int main()
    {
    char * a = "hello";
    char b[] = {'h','e','l','l','o'};
    if(Equal(a,b))
    cout<< "equal";
    _getch();
    }

    وای دقیقا ...خیلی خیلی ممنونم...

قوانین ایجاد تاپیک در تالار

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