在代码中使用了类似"%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();