gpt4 book ai didi

c++ - 当文件有尾随换行符时,ifstream::tellg 在 MSVC2012 和 gcc (mingw) 上有所不同

转载 作者:行者123 更新时间:2023-11-30 04:19:40 26 4
gpt4 key购买 nike

回答

即使一切都在 windows 上编译和运行,我完全忘记了 tellg 作为一个未格式化 输入函数并且不能在文本模式下可靠地使用,这就是我看到的原因差异。参见 std::basic_istream::tellg了解详情。

原创

以下极其简单的程序在 gcc 4.7.1 (mingw) 和 MSVC2012 上给出了不同的结果:

#include <iostream>
#include <fstream>
int main()
{
std::ifstream in("test.txt");
int i;
in >> i;
std::cout << in.tellg() << std::endl;
}

test.txt如下(重要提示:1一个换行符)

1

MSVC 输出:

1

gcc 4.7.1 (mingw) 输出:

2

问题

我相信 gcc 是正确的,因为 operator>> 应该提取换行符,但我不确定。哪个编译器是正确的?

(注意:两个程序都是在windows上编译运行的)。

文本文件的十六进制

31 OD OA

如果我创建一个类似 linux 的行结束文件,即 31 0A,MSVC 输出 0 而 gcc 输出 1

最佳答案

关于c++ - 当文件有尾随换行符时,ifstream::tellg 在 MSVC2012 和 gcc (mingw) 上有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723778/

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