gpt4 book ai didi

c++ - sprintf' : cannot convert parameter 1 from 'const char *' to 'char *'

转载 作者:太空狗 更新时间:2023-10-29 23:21:51 25 4
gpt4 key购买 nike

std::string mystring;

sprintf(mystring.c_str(), "%s %d", "Helloworld", 2014);

它给我一个编译器错误:

“sprintf”:无法将参数 1 从“const char *”转换为“char *”

最佳答案

这不应该是警告,应该是错误。指针std::string::c_str() 返回指向只读内存;任何通过它写入的尝试都是未定义的行为。 (在你的在这种情况下,如果您使用 const_cast 来关闭编译器,那么您代码可能会崩溃,因为你正在调用 c_str()空尝试。)

一般来说,你可能想要的是std::ostringstream:

std::ostringstream formatter;
formatter << "Helloworld" << ' ' << 2014;
std::string myString = formatter.str();

FWIW:sprintf 是最危险的函数之一标准库,并且仅出于历史原因存在。它是几乎不可能安全使用;即使在 C 中,你也应该更喜欢snprintf(但在 C++ 中,std::ostringstream 要好得多)。

关于c++ - sprintf' : cannot convert parameter 1 from 'const char *' to 'char *' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26033391/

25 4 0