C ++,在字符串的特定位置插入子字符串

时间:2016-03-29 23:15:00

标签: c++ string

我试图使用

在C ++中将子字符串插入到字符串中
mystr = std::string("This is a '%s' string", "beautiful");

但它不起作用......

如果我要使用语法stringstream,或者我使用的语法不正确,我是否真的必须依赖%s选项?

4 个答案:

答案 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;
}    

Live Demo

答案 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();