我还在制作电影数据库,我想向用户显示他输入的文件。
然而,当我使用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();
}
答案 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可能会帮助你更多。