C++ 在windows上IO随机访问 遇到\r\n咋回事

C++ 在windows上IO随机访问 遇到\r\n怎么回事
fstream inOut("copyOut.txt", fstream::ate | fstream::in | fstream::out);
    if (!inOut)
    {
        cerr << "Unable to open file!" << endl;
        return EXIT_FAILURE;
    }
    auto end_mark = inOut.tellg();
    inOut.seekg(0, fstream::beg);
    string line;
    while (inOut && inOut.tellg() != end_mark && getline(inOut, line)){       
        auto mark = inOut.tellg();
        inOut.seekg(mark);
        cout << mark << " " << line << '\t'; 
    }
主要代码如上。
文件copyOut.txt内容为C++ 在windows上IO随机访问 遇到\r\n咋回事
在windows上编码:    C++ 在windows上IO随机访问 遇到\r\n咋回事
当注释红色那一句,运行结果:C++ 在windows上IO随机访问 遇到\r\n咋回事
不注释的运行结果:                    C++ 在windows上IO随机访问 遇到\r\n咋回事
网上搜到一些,好像是换行的问题,txt里的换行是\r\n(0D 0A)。如果换行是\n(0A) 运行结果一样都是C++ 在windows上IO随机访问 遇到\r\n咋回事
请问遇到\r\n是怎么回事?还有读第一行后,tellg()为什么返回9?
------解决思路----------------------
linux只需要\r就能换行,windows需要再加\n
------解决思路----------------------
无binary不要seekp,seekg!

推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fseek,fread,fwrite,fgetc,fclose  //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了