C++ string format的时候出错

来源:互联网 发布:董云飞老师网络公开课 编辑:程序博客网 时间:2024/04/23 14:28

在代码中使用了类似"%s"等格式化来处理string类型的时候,出现:


cannot pass object of non-POD type 'string'(aka 'basic_string<char>')through variadic function


这样的错误,百度下发现:

printf,scanf,fprinf等可以format的一个字符串中使用"%s"时,只能使用C string;如果是C++ string的话,就必须先变成C string,否则就会出现类似上面的错误.


示例代码:

string str ("Test string");printf("%s\n", str);

这个时候会出现编译错误:

warning:cannot pass objects of non-POD type 'struct std::string' through '...';call will abort at runtime.


此时,只需要将C++ string转化成 c string就可以了,如:


str.c_str();