2011-12-13 2 views
0

私はこれがうまくいかない理由を知りません、私はaとbとして2つのchars enterdを交換する必要がありますが、コンパイルしますが、すべてのcharsはbと入力されたcharと置き換えられます。あなたが==代わりの=を使用する必要がcharスワップファイル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; 
}    

答えて

7
if

else if。 C++/Cでは、比較のために==、代入に=を使用します。

+0

おかげさまで、なぜ私はそれがほしいと思うのか分かりません。 – Dom

+0

あなたは答えとして最初のill mark ursに答えていると思います。 – Dom

+0

@DominicBarrett:この種のエラーを指摘するために、コンパイルの警告を出すことができます。 –

6

テストの代わりに値を割り当てています。これは

if (c == b)

if (c == a)

+0

おかげさまでウルトのソッツが板になってくれてありがとう! – Dom

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

=であるべきである

は、比較のため==を使用し、割り当てのためのものです。

aが0(文字 '0'ではない)でない限り、その最初のブランチは常に実行されます。

+0

板垣でありがとうございました。 – Dom

7

if(c = a)およびelse if (c = b)が疑わしい。 aの値をcに代入し、bの値をcに代入します。私は、割り当て操作が正常に完了すると(それは)ブロックが実行されると思います。 =演算子の代わりに==演算子を使用したいと思っています。

+0

板垣でありがとう、ウル右ソッツ! – Dom

+2

この回答を受け入れるには、チェックマークをクリックしてください。または、あなたが答えたと思われる答えがどれでも。 – Almo

+0

私は今10分かかるでしょう。 – Dom