我试图使用
在C ++中将子字符串插入到字符串中mystr = std::string("This is a '%s' string", "beautiful");
但它不起作用......
如果我要使用语法stringstream
,或者我使用的语法不正确,我是否真的必须依赖%s
选项?
答案 0 :(得分:4)
您将printf()
系列格式字符串与std::string
构造语法混淆。通常不支持这些格式字符串。
其他答案中指出了各种选项。
要使用printf()
样式格式字符串本地使用char*
缓冲区,您可以使用snprintf()
:
#include <iostream>
int main(){
size_t size = snprintf( NULL, 0, "This is a '%s' string", "beautiful") + 1;
std::string mystring(size,0x00);
snprintf( &mystring[0], size, "This is a '%s' string", "beautiful");
std::cout << mystring << std::endl;
}
答案 1 :(得分:1)
您可以使用std::string::insert
std::string mystr{"This is a string"};
mystr.insert(10, std::string("beautiful"));
或
mystr = std::string("This is a ") + "beautiful" + " string";
答案 2 :(得分:0)
您可以使用std::string::insert
:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string mystr{ "This is a string" };
mystr.insert(10, "beautiful");
cout << mystr << endl;
}
答案 3 :(得分:0)
另一种方式(需要提升)
#include <boost/format.hpp>
auto s = (boost::format("this is a %1% string") % "beautiful").str();