C ++ cout char' return'文件中的字符出现两次

时间:2016-01-27 04:28:28

标签: c++

我试图根据纳粹德国的Enigma机器如何工作来创建一个加密文件的程序,但没有缺陷:P。

我有一个函数可以在文件的n点获取一个字符,但是当它返回一个返回字符并且我cout<<它,就像它进入两次。 IE如果我从文件中的i ++点循环cout,则终端中的各行显示为分开

更多回报

而不是一个。

这里的功能是:

char charN(string pathOf, int pointIn){
    char r = NULL;
      // NULL so I can tell when it doesn't return a character.
    int sizeOf; //to store the found size of the file.
    ifstream cf; //to store the Character Found.
    ifstream siz; //used later to get the size of the file

    siz.open(pathOf.c_str());

    siz.seekg(0, std::ios::end);
    sizeOf = siz.tellg();  // these get the length of the file and put it in sizeOf.

    cf.open(pathOf.c_str());
    if(cf.is_open() && pointIn < sizeOf){ //if not open, or if the character to get is farther out than the size of the file, let the function return the error condition: 'NULL'.
        cf.seekg(pointIn); // move to the point in the file where the character should be, get it, and get out.
         cf.get(r);
         cf.close();
    }
    return r;
}

如果我使用cout&lt;&lt; &#39; \ n&#39;,但是从文件和&#39; \ n&#39 ;?返回的不同之处 或者还有其他我想念的东西? 我一直在谷歌搜索,但我提前找不到与我的问题类似的任何东西,提前谢谢。

如果重要的话,我使用Code :: Blocks 13.12作为我的编译器。

1 个答案:

答案 0 :(得分:1)

这是在Windows机器上吗?在Windows中,文本文件中的新行由\ r \ n表示。

  • \ r =回车
  • \ n =换行

您可能会分别对每个人进行couting,并且输出缓冲区正在为每个人创建一个新行。