尝试过
.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
绝对不会出现在其中 - 输入只是跳到输入文件的下一行。
\n
,因为如果 get 遇到\n
,您将会在 continue 行而不是 while 行上。或者我误解了吗? - CB BaileyL'\n'
是16位的wchar_t
,不是8位的char
,但是这应该没有任何区别。 - René Richterwifstream
。 - Puppyinput.get()
吗? - René Richter