-2

プログラムを作成しようとしていますが、すでに完成していますが、もっと何かが必要です。そのため、ユーザーは、文字列に * i want to erase the first * が含まれている場合に入力を求め、入力を計算します

    getline(cin,str);
    int k=str.length();
    for(int i=0; i<=k; i++)
        if(str[i]=='*')
            string::iterator it;
            it=str.begin()+i;
            str.erase(it);
            break;
    cout<<str<<endl;

私は何を間違っていますか?

4

2 に答える 2

4

{}細心の注意を払ってください。集計ではなく、範囲を制御するために括弧を使用する必要があります。

また、=aでの使用ifは代入であり、チェックではありません。使用する必要があります==

を使用して反復しiますが、使用して削除しxますか?

于 2012-11-15T15:51:38.240 に答える
2

を使用して:std::findの最初の出現を削除することにより、これを単純化できます。*

str.erase(std::find(str.begin(), str.end(), '*')); 
于 2012-11-15T15:54:06.377 に答える