有没有办法用 basic_streambuf 来 std::basic_istream::get 来读取 Delimeter Char?

is there a way to std::basic_istream::get with a basic_streambuf to also read the delimeter char?

提问人:Raffaello 提问时间:9/10/2023 更新时间:9/10/2023 访问量:18

问:

鉴于

#include<string>
#include<stringstream>
#include <fstream>

int main(int argc, char* args[])
{
  std::fstream  file("MyFile.txt", std::fstream::in);
  std::stringbuf sb;
  file.get(sb, '\0');
  file.get(); // (1) wasting the delimiter char
  
   return 0;
}

基本上,我正在寻找的是避免做声明,因为它看起来不整洁。(1)

(近似的)替代解决方法可以是 ,但不是动态分配的,因为它需要固定大小的缓冲区,因此在使用 .getlinestringbufstd::basic_streambuf

有没有办法在不强迫下一条语句的情况下读取分隔符 char 来做一个浪费?std::basic_istream::get(basic_streambuf&, ...).get

C++20 fstream 字符串缓冲区

评论

0赞 n. m. could be an AI 9/10/2023
en.cppreference.com/w/cpp/string/basic_string/getline
0赞 Raffaello 9/10/2023
@n.m.couldbeanAI我已经在问题中指出了,但不适合用例。getline
0赞 Raffaello 9/10/2023
最终,总有一天,而不是浪费了。seekg(1, fstream::cur)
1赞 n. m. could be an AI 9/10/2023
有两个不同的函数名为 。“不像 stringbuf 那样动态分配,因为它需要固定大小的缓冲区”就是其中之一。getline
0赞 Raffaello 9/10/2023
谢谢。我错过了。非常感谢。

答: 暂无答案