私はカスタム C++ クラッシュ コースを受講しています。基本的なことは何年も前から知っていましたが、現在は記憶を新たにして、より多くのことを学ぼうとしています。そのために、(リンクされたリストに基づくスタック クラスを作成した後の) 2 番目のタスクとして、独自の文字列クラスを作成しています。
今まではかなり順調に進んでいます。cin >> my_string; のようなことができる operator>> をオーバーロードしたいと思います。問題は、istream を正しく読み取る方法がわからないことです (または、問題は、ストリームがわからないことです...)。一度に .read() を 128 バイト処理する while (!stream.eof()) ループを試してみましたが、予想どおり、EOF でしか停止しません。cin >> で std::string に取得するように、改行に読み込んでもらいたいです。
私の文字列クラスには、メモリを (再) 割り当てる alloc(size_t new_size) 関数と、その部分を行う append(const char *) 関数がありますが、明らかに、書き込む前に割り当てるメモリの量を知る必要があります。バッファ。
これを実装する方法に関するアドバイスはありますか?Seekg() と tellg() を使用して istream の長さを取得しようとしましたが、役に立ちませんでした (-1 を返します)。また、言ったように、EOF (改行で読み取りを停止しません) までループして、一度に 1 つのチャンクを読み取ります。