2013-03-18 5 views
1

Я все еще работаю над базой данных для фильмов, и я хотел бы показать пользователю, что у него есть файл.Как получить шестнадцатеричное значение в C++ для правильной строки?

Однако, когда я использую cout << lisafilm <<, он предоставляет мне шестнадцатеричное значение. Поэтому мне нужно преобразовать hex в строку.

Фрагмент проблемы.

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(); 

} 
+2

Вы хотите, чтобы шестнадцатеричное значение преобразовывалось в шестнадцатеричную строку? Вопрос неоднозначный. –

+0

Когда вы выполняете 'int hex_str = lisafilm', вы пытаетесь преобразовать объект потока в целое число. Как это должно быть сделано? Вы хотите читать из потока? Или что-то другое? Кроме того, почему вы называете функцию 'main'? Этот вопрос не имеет смысла. –

+0

Полностью от темы, но мне любопытно: какой у вас родной язык? Я не могу сказать из текста в сообщениях ... –

ответ

0

Попробуйте это:

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

aggregate 'std :: stringstream ss 'имеет неполный тип и не может быть определен – Imsorryneedhelp

+1

@Imsorryneedhelp' #include '. Google stringstream ftw. – Lundin

+0

Благодарим вас за помощь. – Imsorryneedhelp

1

, когда я использую cout << lisafilm это дает мне шестнадцатеричное значение

Это потому, что вы пытаетесь выводить ofstream. Когда это происходит, вызывается operator void*, создавая произвольную шестнадцатеричную последовательность, привязанную к вашему потоку, но в конечном итоге очень бесполезна.

0

lisafilm является потоком, не строки

Если вы хотите скопировать lisafilm в COUT что-то вроде cout << lisafilm.rdbuf(); будет делать трюк (если предположить, что lisafilm является ostream или istream и что позиция lisafilm является началом файла.

Ваш код очень плохо отформатирован, я не думаю, что y ou отправил компиляцию. Если вы очистите его, stackoverflow может помочь вам больше.

Смежные вопросы