以下是功能和呼叫线路。我有一个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);
答案 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。