gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:34:40 25 4
gpt4 key购买 nike

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

尝试过:.get(),很多答案都推荐,但是效果和std::noskipws是一样的,就是我现在得到了所有的空格,但不是我需要对某些结构进行词法分析的换行符。

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

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/59430176/

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