2015-07-20 4 views
0

Ниже приведены функции и линия вызова. У меня есть char sKey. Если внутри IDE, если я проверяю tmpstring после преобразования его в строку, он показывает значение, которое я ожидаю «E2247410849FA3». Но, когда я просматриваю файл журнала, я получаю «003BFA34», я хочу, чтобы он показывал 722 .... Что я делаю неправильно?Добавление строки в файл журнала

void logit(const std::string& ctext) 
{ 
    std::ofstream outfile; 
    outfile.open("c:\\hex.log", std::ios_base::app | std::ios_base::out); 
    outfile << &ctext <<endl; 
} 

tmpstring = std::string(sKey,14); 
logit(tmpstring); 
+0

Попробуйте в режиме запуска в идее один раз, –

+0

Вы должны передать 'ctext' с помощью ссылки константы вместо значения. 'const std :: string & ctext'. –

+0

Спасибо. Я сделал эту модификацию, однако она все равно не повлияла на результат внутри файла. Результат на этот раз 0037FC0C. – iBoston

ответ

2

Вы добавляемые настройки правильных, но ваш код имеет один фатальный недостаток:

Вы печатаете memroy адрес строки, а не реальной строка.

Для того, чтобы исправить это, просто Принг ctext вместо &ctext:

void logit(std::string ctext) 
{ 
    std::ofstream outfile; 
    outfile.open("c:\\hex.log", std::ios_base::app | std::ios_base::out); 
    outfile << ctext <<endl; 
    //  ^no & 
} 

На полностью несвязанной ноте производительности, вы должны прочертовский пройти по константной исх.

+0

Спасибо. Однако - если я удалю это, я получаю следующую ошибку: Ошибка ошибка C2679: двоичный '<<': оператор не найден, который принимает правый операнд типа 'const std :: string' (или есть нет приемлемого преобразования) – iBoston

+0

Убедитесь, что вы имеете все права. – KABoissonneault

+0

Нашли ошибку. Не включал #include iBoston