2011-12-13 74 views
0

我不知道爲什麼這不起作用,我需要交換兩個字符輸入爲A和B,它編譯,但所有的字符被替換爲B輸入的字符,任何意見?字符交換在一個文件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

ifelse if你需要使用==,而不是=。在C++/C中,您使用==進行比較,=進行分配。

+0

謝謝你爲什麼我沒有看到我沒有想法,因爲我想要它! – Dom 2011-12-13 18:34:16

+0

我想你回答了第一個病人標記urs作爲答案 – Dom 2011-12-13 18:37:17

+0

@DominicBarrett:你可能想研究一下你的編譯警告來指出這種錯誤。 – 2011-12-13 19:07:32

6

您正在分配值而不是測試。

應該

if (c == b)

if (c == a)

+0

感謝您的權利soz作爲一個木板! – Dom 2011-12-13 18:34:49

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

=是分配,使用==進行比較。

只要a不是0(整數0,不是字符'0'),就會始終執行第一個分支。

7

if(c = a)else if (c = b)是可疑的。您正在將a的值分配給c,將b的值分配給c。我相信如果賦值操作成功完成(就是這樣),該塊將執行。我相信你想要==運營商,而不是=運營商。