gpt4 book ai didi

c++ - 从 ifstream 读取不会读取空格

转载 作者:IT老高 更新时间:2023-10-28 21:46:32 26 4
gpt4 key购买 nike

我在 C++ 中实现了一个自定义词法分析器,当尝试读取空白时,ifstream 不会读出它。我正在使用 >> 逐个字符地阅读,所有的空格都消失了。有什么方法可以让 ifstream 保留所有的空白并把它读给我听?我知道在读取整个字符串时,读取将在空白处停止,但我希望通过逐个字符读取,我会避免这种行为。

Attempted: .get(),很多答案都推荐,但是效果和std::noskipws一样,就是我现在把所有的空格都搞定了, 但 不是 我需要 lex 一些结构的换行符。

这是有问题的代码(扩展注释被截断)

while(input >> current) {
always_next_struct val = always_next_struct(next);
if (current == L' ' || current == L'\n' || current == L'\t' || current == L'\r') {
continue;
}
if (current == L'/') {
input >> current;
if (current == L'/') {
// explicitly empty while loop
while(input.get(current) && current != L'\n');
continue;
}

我正在打破 while 行并查看 current 的每个值,以及 \r\n 绝对不在其中——输入只是跳到输入文件的下一行。

最佳答案

有一个操纵器可以禁用空格跳过行为:

stream >> std::noskipws;

关于c++ - 从 ifstream 读取不会读取空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com