1

>>myString クラスをオーバーロードしました。しかし、使用cin >> tempしてから別の cin を文字列に使用すると、以前のように他の cin が機能しないようです。私のコードを見ると、プログラムは最後に y または n を理解せず、常に while ループに入っていることを意味します。

これは istream 関数です (myString クラスのフレンド)

std::istream &operator>> (std::istream& input, myString& str) {
    char* temp = new char [1000];
    input >> temp;
    int i=0;
    int pow2=1;
    for (i; temp[i]!=NULL; i++) {       
        while(pow2<=i)
            pow2 *= 2;
    }
    delete [] str.string_;
    str.length = i;
    str.capacity = pow2;
    str.string_ = new char [pow2];

    for (int i=0; i<str.length; i++)
        str.string_[i] = temp[i];

    delete [] temp;

    return input;
}

これがメインです

cout << "myString Program" << endl;
    while(1) { //simple again or not while
        myString c;
        cin >> c;
        cout << c;

        string input;
        cout << "\nCountine (y/n)?";
        getline(cin, input);
        if (input[0] == 'n' || input[0] == 'N')
            break;
    }
4

1 に答える 1