gpt4 book ai didi

c++ - C++ 中 seekp(...) 的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:59 25 4
gpt4 key购买 nike

我有以下代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
fstream in("test.txt");
in.seekp(10);

string testStr;
in >> testStr;
cout << testStr;

return 0;
}

文件“test.txt”包含以下文本:

1
2
3
4
5
6
7
8
9
10

当我在 Windows 上编译此代码并运行时,我得到输出 = 5,当我在 Linux Mint 17 上编译此代码并运行时,我得到输出 = 6。

为什么?

最佳答案

这只是一个猜测,但在 Windows 中,编辑器倾向于将换行符写成两个字符:\n\r,而在 linux 中,它只是 \n。所以你可以在 Windows 中看到你的文件:

1\n\r
2\n\r
3\n\r
4\n\r
5\n\r

在 Linux 中

1\n
2\n
3\n
4\n
5\n
6\n

因此在 Windows 中,将搜索器移动到 10 处会将其放在 4 之后的 \n 上,因此接下来提取 5。在 Linux 中,搜索器将继续 6,从而提取它。要测试我的猜测是否正确,请尝试将 Windows 文件复制到 Linux,反之亦然。

关于c++ - C++ 中 seekp(...) 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26182946/

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