1

テキスト ファイルから母音を削除しようとしていますが、問題が発生しています。6 行目で次のようなコンパイラ エラーが表示されます。

invalid conversion from const char to char

これは、コードでファイル ストリームを設定する方法に関係していると確信しています。読み取りと書き込みに使用されるため、fstream を使用していますが、オープン モードがなくてもファイルへの書き込みと読み取りができると考えたため、オープン モードは含めませんでした (1 つを使用する必要があると確信しています)。 、どれかわかりません。)また、等号演算子の設定方法が合法かどうかもわかりません(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();
}
4

2 に答える 2

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++ では、1 つの左辺を複数の右辺に適用することはできません。

if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u')
  s[i] = ' ';
于 2009-07-27T23:49:48.590 に答える
0

ストリームをフラッシュしないためにファイルが変更されない理由

于 2009-07-28T00:35:02.170 に答える