1

我仍在研究电影数据库,我想向用户展示他对文件的输入。

但是,当我使用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(); 

}  
4

3 回答 3

1

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

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

于 2013-03-18T10:30:43.517 回答
0

试试这个:

std::stringstream ss;
ss << std::hex << lisafilm;
const std::string s = ss.str();
于 2013-03-18T10:31:40.507 回答
0

lisafilm 是一个,而不是一个字符串

如果你想复制 lisafilm 来 cout 类似cout << lisafilm.rdbuf();的东西(假设 lisafilm 是 ostream 或 istream 并且 lisafilm 的位置是文件的开头。

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

于 2013-03-18T10:33:48.633 回答