将字符串附加到日志文件

时间:2015-07-20 16:30:04

标签: c++ iostream

以下是功能和呼叫线路。我有一个char sKey。如果在IDE中,如果我在将tmpstring转换为字符串后检查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);

1 个答案:

答案 0 :(得分: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 &
 }

在一个完全不相关的性能注释上,你应该通过const ref。