我正在参加自定义 C++ 速成课程。我已经了解了很多年的基础知识,但我目前正在尝试刷新我的记忆并了解更多信息。为此,作为我的第二个任务(在编写了基于链表的堆栈类之后),我正在编写自己的字符串类。
到目前为止一切都很顺利;我想重载运算符>>,我可以做像 cin >> my_string; 这样的事情。问题是我不知道如何正确读取 istream(或者问题可能是我不知道流......)。我尝试了一个 while (!stream.eof()) 循环,一次 .read()s 128 个字节,但正如人们所预料的那样,它只在 EOF 上停止。我希望它读到换行符,就像你用 cin >> 读到 std::string 一样。
我的字符串类有一个(重新)分配内存的 alloc(size_t new_size) 函数和一个执行该部分的 append(const char *) 函数,但我显然需要知道要分配的内存量才能写入缓冲。
关于如何实现这一点的任何建议?我尝试使用 seekg() 和 tellg() 获取 istream 长度,但无济于事(它返回 -1),并且正如我所说的循环直到 EOF(不会在换行符处停止读取)一次读取一个块。