用C ++替换字符串中的字符

时间:2013-10-07 18:50:12

标签: c++ c database string

在我的应用程序中,我将从数据库中检索错误消息字符串。我想将数字替换为错误消息。错误消息将是C样式字符串,如:

Message %d does not exist

Error reading from bus %d

理想情况下,我希望能够使用这个语句做一个C风格的printf,并用我自己的数字代替。我知道我可以手动完成它,但是有一种更简单的方法可以像字符串一样使用它在普通的printf?

2 个答案:

答案 0 :(得分:1)

除了简单的字符串连接或使用<<以及数字和消息。

我能想到boost::format

int message_no=5;
std::cout << boost::format("Message %d doesn't exist") % message_no ;

答案 1 :(得分:0)

C ++的方法是使用std :: stringstream:

std::stringstream str;
str << "Message " << messageName << " doesn't exist";

std::string out = str.str();

还有非常好的标题提升string algorithms library

std::string message = "Message %s doesn't exist";
boost::replace_first( str, "%s", "MyMessage" );

// message == "Message MyMessage doesn't exist"

boost::format,其作用类似于printf,但完全是类型安全的,并支持所有用户定义的类型:

std::string out = format( "Message %1 doesn't exist" ) % "MyMessage";