[英]How to make a buffer for fstream from std::string
我写了这段代码:
ifstream f("file.txt");
char c;
std::string buffer;
buffer.reserve(1024);
bool flag = true;
while (flag) {
for (int i = 0; i < 1024; ++i) {
if (f.get(c))
buffer += c;
else
flag = false;
}
// do something with buffer
buffer.clear();
}
我需要正好 1 KB 的字符串缓冲区。 有没有更好更有效的方法来做到这一点? 也许一些我不知道的 fstream 或字符串函数?
您不需要for
循环,您可以使用std::istream::read()
代替。 如果可能,请将std::string
替换为char[]
,例如:
ifstream f("file.txt");
char buffer[1024];
while (f.read(buffer, 1024))
{
// do something with buffer up to f.gcount() chars...
}
如果出于某种原因,您实际上需要一个std::string
,那么您可以这样做:
ifstream f("file.txt");
std::string buffer(1024);
while (f.read(&buffer[0], 1024)) // or buffer.data() in C++17 and later
{
buffer.resize(f.gcount());
// do something with buffer ...
buffer.resize(1024);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.