c++ - 从 const char 到 char 的无效转换 - 元音删除

标签 c++ char

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

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();
}

最佳答案

我认为你的意思是从 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] = ' ';

关于c++ - 从 const char 到 char 的无效转换 - 元音删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1191240/

相关文章:

c++ - 新编译器 - 使用 Cout?

c++ - 定义预处理器宏

c - 结构字段中的 strcpy/strncpy 段错误

java - 我想创建一个运算符来除以 Problem1 : ("+6x" ,"2"), get ("+3x");问题2 : ("12" ,"2"), 得到("6")。

c++ - "be representable in execution character set"是什么意思?

c++ - 你会选择什么?虚函数、模板还是分支?

c++ - std::vector<std::pair<const int, const int>>::clear() VS 2010 无编译

c++ - 套接字 recv() 一次一个字节

java - 圆括号标识符 Java

objective-c - 将 char 数组保存到 iPhone