我担心缓冲区溢出,我需要从派生自 std::istream 的类中取出一些字符。据我了解,没有我自己的 >> 运算符,无法直接从 istream 流式传输到 std::string。所以我正在考虑将内容流式传输到 char 数组,然后将其放入 std::string。这是一个简单的例子:
char CharArray[1000] = {0};
SomeIStream >> CharArray;
std::string StuffFromStream(CharArray);
但是,似乎没有办法知道 CharArray 不会溢出。流提取运算符将写入 chararray 是否有最大值?有什么方法可以检查有多少会被抢先提取?这一切都错了吗,有没有比这更好的方法?
Edit1:,我修复了我的不是内存泄漏。无需调用删除。我不敢相信我做到了。
Edit2:建议直接使用 >> 到字符串。我在代码库中尝试过这个问题的来源,但它失败了。说找不到适合该运算符的匹配项。然后我尝试使用 std::fstream 并再次失败。在简单的简约项目中尝试 std::fstream 代码成功。这告诉我,我的大型项目还有其他问题。这个问题的初衷不再有效。
Edit3:我解决了这个问题。我试图流式传输到 typedef String,我认为它实际上是 std::string,但它实际上是一个 const std::String。自然没有用于写入不可写对象的流提取操作符,所以它只给了我 istream 标头中列出的所有操作符(我需要的是字符串标头中的操作符)。
感谢那些指出我的错误研究并指出我正确方向的人。