Неверное преобразование из const char в char - Удаление гласного

64
8

Я пытаюсь удалить гласные из текстового файла, и у меня проблемы. Я получаю ошибку компилятора в строке 6, говоря


invalid conversion from const char to char

Я уверен, что это связано с тем, как я настраиваю поток файлов в своем коде. Я использую fstream, поскольку он используется для чтения и записи, но я не включил ни один из открытых режимов, потому что я думал, что могу писать и читать в/из файла без них (я уверен, что вы должны использовать один, Я просто не уверен, какой из них.) Кроме того, я не уверен, что способ, которым я устанавливаю оператор equals, является законным или нет (будет ли он читать его, как если бы s [i] равно a или e или я или 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();
}

спросил(а) 2021-01-19T19:14:25+03:00 6 месяцев назад
1
Решение
117

Я думаю, вы имеете в виду недопустимое преобразование от const char * до char


Когда вы индексируете строку, вы должны назначить char не следующую строку:


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

Также для каждого сравнения вы должны иметь как правую, так и левую сторону. Вы не можете применить одну левую сторону к нескольким правым сторонам в С++.


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

ответил(а) 2021-01-19T19:14:25+03:00 6 месяцев назад
45

Причина, по которой файл не изменяется, потому что вы не очищаете поток

ответил(а) 2021-01-19T19:14:25+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема