> n; f.get(&c); 提取数字 1-6ren">
gpt4 book ai didi

c++ - 真的很简单 c++ : Does the operator >> in fstream remove newline characters after reading something?

转载 作者:太空狗 更新时间:2023-10-29 21:48:23 26 4
gpt4 key购买 nike

// file.in
12
13

// main.cpp
fstream f("file.in", ios::in);
int n;
char c;
f >> n;
f.get(&c);

提取数字 12 后,下一个字符是什么?它是换行符还是'1'?如果我调用 getline 而不是 get,我得到的是空行还是“13”?

最佳答案

它将分隔符留在输入缓冲区中,因此您读取的下一个字符将是换行符。但是请注意,大多数提取器将在提取任何内容之前跳过空格(包括 new-line),因此除非您调用类似 getline 的内容这通常是不可见的。

编辑:要在 ideone 之类的东西上进行测试,请考虑使用 stringstream :

#include <sstream>
#include <iostream>

int main(){
std::istringstream f("12\n13");
int n;
char c;
f >> n;
f.get(c); // get takes a reference, not a pointer. Don't take the address.

std::cout << "'" << c << "'";
return 0;
}

我不希望看到 stringstream 之间的区别和一个 fstream像这样。

关于c++ - 真的很简单 c++ : Does the operator >> in fstream remove newline characters after reading something?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842545/

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