我遇到了一个我无法解决的问题。 所以我需要的是:我需要创建一个程序,接收一个字符串输入并将其转换为十六进制,然后将其保存到文件中。 如果文件没有创建,它应该,但是如果有一个已经它应该继续写入相同的(我想这里我需要“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
答案 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
字符串写入文件。