2009-07-27 131 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

究其原因,文件并没有改变,因为你不刷新流

相关问题