2009-07-27 77 views
1

我試圖從文本文件中刪除元音,並遇到一些麻煩。我在第6行收到編譯器錯誤,說從const char到char的轉換無效 - 元音刪除

invalid conversion from const char to char 

我敢肯定,這與我在我的代碼中設置文件流的方式有關。我使用fstream,因爲它用於讀寫,但我沒有包含任何開放模式,因爲我認爲我可以在沒有它們的情況下寫入和讀取文件(我非常確定您必須使用一個,我只是不確定哪一個。)另外,我不確定我設置等號運算符的方式是否合法(它是否將s [i]等於a或e或i或o或u)。

代碼:

#include "std_lib_facilities.h" 

void vowel_removal(string& s) 
{ 
    for(int i = 0; i < s.length(); ++i) 
      if(s[i] == ('a' || 'e' || 'i' || 'o' || 'u')) s[i] = " "; 
} 

int main() 
{ 
    cout << "Enter file name.\n"; 
    string filename; 
    cin >> filename; 
    fstream f(filename.c_str()); 

    string word; 
    while(f>>word){ 
        vowel_removal(word); 
        f << word; 
        } 

    keep_window_open(); 
} 
+1

你應該接受給你原來的問題的答案之一,而不是編輯這一塊,打開一個新的問題爲你的其他問題。 – 2009-07-28 00:25:06

+0

好的。一般來說,我一直認爲你應該編輯你的問題,如果你有另一個問題,但我會聽取你的意見。 – trikker 2009-07-28 00:28:30

回答

6

我想你的意思是無效的轉換,從const char *char

索引時字符串必須指定一個字符不是另一個字符串:

std::string s = "tie"; 
s[0] = 'l'; 
assert(s == "lie"); 
//s[0] = "l"; <--- not valid const char * to char 

你也每次比較必須同時具有右側和左側。在C++中,不能將一個左側應用於多個右側。

if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u') 
    s[i] = ' '; 
0

究其原因,文件並沒有改變,因爲你不刷新流

相關問題