传递字符串的c ++非POD警告?

use*_*405 10 c++ string printf warnings

void displayinfo(string &filename)
{
printf("%s% 38s\n", "Filename:", filename);
...
Run Code Online (Sandbox Code Playgroud)

警告:类型为"std :: string"的非POD对象作为变量参数传递给函数"std :: printf(const char*,...)".

网上没有任何内容可以解释警告的含义.

我如何让printf写这个(假设filename = test.txt):

文件名:(右对齐文件名)test.txt

提前致谢.

And*_*owl 14

解释非常简单:只有POD(普通旧数据结构)可以作为参数传递给可变参数函数(不是可变参数函数模板,只是使用省略号的简单可变参数函数).

std::string 不是POD,但你可以这样做:

printf("%s% 38s\n", "Filename:", filename.c_str());
//                                       ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

所述c_str()成员函数返回一个const char*被封装的C字符串.