我希望这将是一个非常基本的问题,可能是由于我对许多C ++ Win32 API的不了解。
无论如何,我在sprintf()
功能方面遇到了一些麻烦。使用像这样的字符串我没有问题:
//memory is a void pointer that maps a file to shared memory
sprintf((char *)memory, "Shared memory message"); //Write to shared memory
但是当我尝试使用string
变量时,它无法正常工作......
sprintf((char *)memory, str_var); //Write to shared memory
我收到错误消息:no suitable conversion function from "std::string" to "const char *" exists
。我甚至无法通过类型转换来解决这个问题,就像我对memory
所做的那样。
这似乎很不一致。我做错了什么,如何给它一个值得接受的价值?
答案 0 :(得分:2)
如果您需要sprintf
,则需要传递const char*
:
所以,例如。
sprintf((char *)memory, str_var.c_str());