2011-12-13 3 views
0

Je ne sais pas pourquoi cela ne fonctionne pas, j'ai besoin d'échanger les deux caractères enterd comme a et b, il compile mais tous les caractères sont remplacés par le char entré comme b, un conseil?Char échanger dans un fichier C++

while (n != exist) 
{ 
    cout<<"What is the letter you want to swap?"<<endl; 
    cin>>a;    
    cout<<"What is the letter you want to swap it with?"<<endl; 
    cin>>b; 
    if (inFile.is_open()) 
    { 
     while (inFile.good()) 
     { 
      inFile.get(c); 
      if(c = a) 
      { 
       outFile<< b; 
      } 
      else if (c = b) 
      { 
       outFile<< a; 
      } 
      else 
      { 
       outFile<< c; 
      }        
     }       
    } 
    else 
    { 
     cout<<"Please run the decrypt."<<endl; 
    } 
    cout<<"Another letter? <n> to stop swapping"<<endl; 
    cin>>n; 
}    

Répondre

7

En if et else if vous devez utiliser == au lieu de =. En C++/C vous utilisez == pour la comparaison et = pour l'affectation.

+0

Merci pourquoi n'ai-je pas vu que je n'ai aucune idée fonctionne comme je le veux !! – Dom

+0

Je suppose que vous avez d'abord répondu à la mauvaise réponse que vous répondez à la question – Dom

+0

@DominicBarrett: Vous voudrez peut-être examiner les avertissements de la compilation pour signaler ce genre d'erreur. –

6

Vous attribuez des valeurs au lieu de tester.

Il devrait être

if (c == b)

et

if (c == a)

+0

merci à votre droite soz pour être une planche! – Dom

7
if(c == a) 
{ 
    outFile<< b; 
} 
else if (c == b) 
{ 
    outFile<< a; 
} 

= est pour l'affectation, l'utilisation == à titre de comparaison. Comme vous l'avez, tant que a n'est pas 0 (l'entier 0, pas le caractère '0'), cette première branche sera toujours exécutée.

+0

merci à vous d'être une planche! – Dom

7

if(c = a) et else if (c = b) sont suspectes. Vous affectez la valeur de a à c et la valeur de b à c, respectivement. Je crois que si l'opération d'assignation se termine avec succès (c'est le cas), le bloc s'exécutera. Je crois que vous voulez l'opérateur ==, au lieu de l'opérateur =.

+0

merci à votre droite soz pour être une planche! – Dom

+2

Cochez la case pour accepter cette réponse. Ou quelle que soit la réponse que vous pensiez répondre le mieux. – Almo

+0

je vais maintenant il faut 10 minutes avant que je peux – Dom