【问题标题】:Substituting 0A For \n用 0A 代替 \n
【发布时间】:2011-01-02 00:58:48
【问题描述】:

我当时正在开发一个简单的十六进制编辑器(当时只能读取)。我想用OA 替换"\n",我正在尝试使用此代码:

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

int main() {
   ifstream infile;
   int crtchar = (int)infile.get();
   infile.open("test.txt", ifstream::in);
   while(infile.good())
   {
      if(crtchar != 0xA)
         cout << hex << setfill('0') << setw(2) << crtchar << ":";
      else
         cout << endl;
   }
   cout << "\n=====================================\n";
   infile.close();
   return 0;
}

它编译没有错误,但是当我尝试执行它时,我什么也没得到:

C:\Documents and Settings\Nathan Campos\Desktop>hex

======================================

C:\Documents and Settings\Nathan Campos\Desktop>

这发生在我添加了用OA 替换\n 的功能之后,因为之前它工作得很好。 怎么了?

【问题讨论】:

  • 除了将0xA 切换为'\n' 之外,您确定运行的是完全相同的程序吗? EOL 翻译咬你吗?如果您确实对两者有不同的行为,您是否尝试过打印'\n' 的整数值?为什么你甚至要避免使用更易读(也更便携)的'\n' 来支持0xA?

标签: c++ file-io hex


【解决方案1】:

将int crtchar = (int)infile.get(); 放入while(infile.good()) 并尝试一下。

【讨论】:

    【解决方案2】:

    你不应该先open(...)你的文件然后尝试get()吗? 另外,你不应该在你的while循环中做更多get()'s

    【讨论】:

      【解决方案3】:

      叹息。您尝试在打开文件之前读取文件。

      【讨论】:

        【解决方案4】:

        您意识到您只阅读了一个字符一次,并且甚至在打开文件之前,那时?

        【讨论】:

          猜你喜欢
          • 2012-10-04
          • 1970-01-01
          • 2021-05-23
          • 2011-06-19
          • 2012-11-29
          • 2021-06-11
          • 1970-01-01
          • 1970-01-01
          • 2011-03-16
          相关资源
          最近更新 更多