1

私はまだ映画のデータベースに取り組んでおり、ユーザーがファイルに入力した内容をユーザーに表示したいと思います。

ただし、使用cout << lisafilm <<すると16進値が提供されます。したがって、16 進数を文字列に変換する必要があります。

トラブルの断片。

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それは私に16進値を提供します

これは、を出力しようとしているためですofstream。これが発生すると、operator void*が呼び出され、ストリームに関連付けられている任意の16進シーケンスが生成されますが、最終的には非常に役に立ちません。

于 2013-03-18T10:30:43.517 に答える
0

lisafilmはストリームであり、文字列ではありません

lisafilmをコピーしてcoutする場合cout << lisafilm.rdbuf();は、トリックを実行します(lisafilmがostreamまたはistreamであり、lisafilmの位置がファイルの先頭であると想定します。

あなたのコードは非常に貧弱なフォーマットです、私はあなたが投稿したものがコンパイルされるとは思いません。あなたがそれをきれいにするならば、stackoverflowはあなたをもっと助けることができるかもしれません。

于 2013-03-18T10:33:48.633 に答える
0

これを試して:

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