从const char到char的转换无效 - Vowel Removal

时间:2009-07-27 23:46:54

标签: c++ char

我正在尝试从文本文件中删除元音,但遇到了一些麻烦。我在第6行收到编译错误

invalid conversion from const char to char

我很确定这与我在代码中设置文件流的方式有关。我正在使用fstream,因为它用于读写,但我没有包含任何打开模式,因为我认为我可以在没有它们的情况下写入/读取文件(我很确定你必须使用一个,我只是不确定哪一个。)另外,我不确定我设置equals运算符的方式是否合法(它是否会读取它,好像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();
}

2 个答案:

答案 0 :(得分:6)

我认为您的意思是从const char *转换为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] = ' ';

答案 1 :(得分:0)

由于您不刷新流

而导致文件未更改的原因