2016-03-27 13 views
0

merhaba Bu benim kodumun tamamı değil ama bilgileri yalnızca kullanıcı "NewYork" sözcüğünü yazdığında ve yazdığımda bile hiçbir şey hata ayıklamadığında bilgileri yazdırmam gereken yere yapıştım kelime "NewYork". Peki, sorun olan biri ne söyleyebilir? Teşekkürlerif ve char bildirimi

int main(){ 

    Panel *panelptr; 
    int count,len,wid; 
    double heg; 
    char locat[30]; 

    cout<<"how many panels do you need to create ? "<<endl; 
    cin>>count; 
    panelptr = new Panel[count]; 
    assert(panelptr!=0); 



    for(int i=0; i< count; i++){ 
     cout << "Enter the length: "; 
     cin >>len; 
     cout << "Enter the width: "; 
     cin >> wid; 
     cout << "Enter the height: "; 
     cin >> heg; 
     cout<<"Enter the location: "; 
     cin >>locat; 
     panelptr[i].setPanel(len,wid,heg,locat); 

     if(locat == "NewYork") 
      panelptr->print(); 

    } 


    delete [] panelptr; 
    system("pause"); 
    return 0; 
} 
+1

Sen char işaretçi değerlerini karşılaştırarak dahil , gerçek içerik değil. Char [] yerine std :: string'i kullanmayı deneyin [] – JVApen

+1

Bu ifade 'if (locat ==" NewYork ")' aslında aslında aynı olmayacak iki 'char *' işaretçisini karşılaştırır. –

+0

Diziler, '==' operatör kullanılarak karşılaştırılamaz. Eğer 'locat' dizgisi literal "NewYork" (bir dizi kullanılarak temsil edilir) ile karşılaştırma yapmakta ısrar ederseniz, strcmp() 'işlevine bakın. Daha da iyisi, "char" dizisi yerine "" standart üstbilgisinde belirtilen C++ standart dize sınıfını ('std :: string') kullanın. – Peter

cevap

2

Karakter dizisini bir dizeyle karşılaştırıyorsunuz. karşılaştırmak için strcmp() kullanın: senin gibi Sen if(locat == "NewYork") kullanarak Char dizileri karşılaştırmak olamaz

if (strcmp(locat, "NewYork") == 0) { 
} 
2

.

1) strcmp()

#include <cstring> 
int main() 
{ 
    char locat[30]; 

    if (strcmp(locat, "NewYork") == 0) 
    { 
     // Do what you like. 
    } 
} 

2 kullanın) dize için string

#include <string> 
int main() 
{ 
    std::string locat; 

    if (locat == "NewYork") 
    { 
     // Do what you like. 
    } 
} 
0

Eğer strcmp() işlevini yerine == kullanmalıdır karşılaştırmak kullanın: İki seçeneğiniz vardır. Ne kullanıyorsunuz sadece iki char*'u karşılaştırıyorsanız, bunun aynı olmasını bekleyemezsiniz.
Yani, *

if(strcmp(locat, "NewYork") == 0) 
    panelptr->print(); 

strcmp()string.h başlığında tanımlanır için

if(locat == "NewYork") 
    panelptr->print(); 

adresinin kodunu değiştirmek, Yani programda #include<string.h>