以HEX格式将字符串变量输出到文本文件中

时间:2011-01-28 12:54:33

标签: c++ string file text hex

我遇到了一个我无法解决的问题。 所以我需要的是:我需要创建一个程序,接收一个字符串输入并将其转换为十六进制,然后将其保存到文件中。 如果文件没有创建,它应该,但是如果有一个已经它应该继续写入相同的(我想这里我需要“a +”参数吗?)

这是一个例子。我执行程序。请我输入一些单词。 我键入“stack”,它返回给我“73 74 61 63 6B”,这是正确的。 我用这个算法完成了这个

#include <cstdio>
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
int main(){
 string a;
 cin >> a;
 for( int i = 0; i < a.size(); i++ )
  printf( "%hX ", a[i] );
 cout << endl;
 system( "pause" );
 return 0;
}

这一切都很好,但我需要在文本文件中输出。 我用过这个:

for( int i = 0; i < a.size(); i++ ) 
     {  
      fprintf(pFile, "%hX ", a[i]); 
     }

但它不起作用。我可以帮忙解决这个问题,谢谢!

完整代码,抱歉我遇到代码示例问题我希望你不介意使用pastebin链接 http://pastebin.com/3u1mfg8n

4 个答案:

答案 0 :(得分:2)

您正在学习C ++,为什么不使用文件流呢?

#include <fstream>
#include <iomanip>

using namespace std;

int main () {
  // Read your string as before
  fstream fs;
  fs.open ("hex.txt", fstream::out | fstream::app); // app = append to file
  for(int i=0; i<a.size(); ++i) 
  {  
    fs << hex << static_cast<int>(a[i]) << " ";
  }
  fs.close();
  return 0;
}

答案 1 :(得分:1)

我已经测试了您的代码,但它运行正常。它在运行它的目录中创建一个名为Personal Shop Codes.txt的文件。我希望问题是你的程序没有从你期望它运行的目录运行,所以你的输出文件只是放错地方。在IDE中执行程序时通常会出现这种情况。

答案 2 :(得分:0)

您需要先使用fopen()并将其分配给您的FILE指针:

FILE *pFile;
pFile = fopen("output.txt","w");

然后在程序写完文件后关闭文件:

fclose(pFile);

答案 3 :(得分:-1)

这会将字符串中的每个字节(每个字符)转换为其2个字符的十六进制编码:

for(int i = 0; i < a.size(); i++)
{
    printf("%2.2X ", a[i]);
}

如果您想存储它:

std::string b = "";
for (int i = 0; i < a.size(); ++i)
{
    char tmp[3] = {0};
    sprintf(tmp, "%2.2X", a[i]);
    b += tmp;
}

然后,您可以轻松地将整个b字符串写入文件。