如何将c ++中的十六进制值转换为正确的字符串?

时间:2013-03-18 10:24:05

标签: c++ database hex

我还在制作电影数据库,我想向用户显示他输入的文件。

然而,当我使用cout << lisafilm <<时,它为我提供了十六进制值。因此,我需要将十六进制转换为字符串。

麻烦的片段。

void sisend() 
{ 
     string nimi; 
     int aasta; 
     long int hinne; 
     string vaadatud; 
     ofstream lisafilm("andmebaas.txt", ios::app); 
     cout <<"Sisestage filmi nimi." << endl; 
     cin >> nimi;

     cout << "Sisestage filmi aasta." << endl; 
     cin >> aasta;     

     cout << "Sisestage filmi hinne." << endl; 
     cin >> hinne; 

     cout << "Kas olete filmi juba vaadanud?" << endl;  
     cout << "Vastake 'Jah' voi 'Ei'" << endl; 
     cin >> vaadatud; 

lisafilm<< nimi << "  " << aasta << "  " << hinne<< "  " << vaadatud << endl; 
lisafilm.close();    

{  
 system("CLS"); 
 int hex_str = lisafilm ;

 cout << "Aitah kasutamast andmebaasi." << endl; 
 system("pause"); 
 cin.get (); 
} 
 main(); 

}  

3 个答案:

答案 0 :(得分:1)

  

当我使用cout << lisafilm时,它为我提供了十六进制值

这是因为您正在尝试输出ofstream。当发生这种情况时,调用operator void*,产生一个与你的流绑定的任意十六进制序列,但最终是无用的。

答案 1 :(得分:0)

试试这个:

std::stringstream ss;
ss << std::hex << lisafilm;
const std::string s = ss.str();

答案 2 :(得分:0)

lisafilm是,而不是字符串

如果你想将lisafilm复制到cout,像cout << lisafilm.rdbuf();那样就可以了(假设lisafilm是一个ostream或istream,而lisafilm的位置是文件的开头。

您的代码格式很差,我不认为您发布的内容会编译。如果你清理它,stackoverflow可能会帮助你更多。