【问题标题】:Searching for \n and \t搜索 \n 和 \t
【发布时间】:2014-05-19 04:16:32
【问题描述】:

我正在尝试构建一个能够读取所有字符的程序,包括 jpg 文件中的控制字符和空格 .... 我让它读取 \n 或 \t 但我不能同时添加它们或任何其他控制字符... 这是我的代码..

#include <string>
#include <bitset>
#include <iostream>
#include<fstream>
using namespace std;
  int main(){
  ifstream file("E:\\2.jpg", ios::binary);      
  string myString;
  ofstream fout("E:\\mnmn.txt");
while(getline(file,myString,'\n') )
  {
for (size_t i = 0; i < myString.size(); ++i)  
 {
  fout <<"."<< bitset<8>(myString.c_str()[i]);
}}
 return 0;
 }

有人可以帮忙吗?

【问题讨论】:

  • 你的问题到底是什么?
  • while(getline(file,myString,'\n') ) 如果文件中的数据可以包含控制字符,这将如何工作?
  • 好吧,实际上这段代码给出了像 00001010 这样不可打印的字符,而 \t 给了我 00001001
  • @MarkRansom 我的问题是我无法将所有 jpg 打印为二进制 .. 缺少控制字符
  • \n == 00001010 和 \t == 00001001 通常被认为是可打印的,尽管它们在 ASCII 的控制代码范围内。

标签: c++ binary ascii


【解决方案1】:

改变

while(getline(file,myString,'\n') )
{
   for (size_t i = 0; i < myString.size(); ++i)  
   {
      fout <<"."<< bitset<8>(myString.c_str()[i]);
   }
}

int c;
while( (c = file.get()) != EOF )
{
   fout <<"."<< bitset<8>(c);
}

【讨论】:

  • 'struct std::ifstream' 没有名为 'getc' 的成员
  • 抱歉,应该是get()。修正了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
相关资源
最近更新 更多