gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:30:11 26 4
gpt4 key购买 nike

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

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

网上没有任何内容解释该警告的含义。

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

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

提前致谢。

最佳答案

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

std::string 不是 POD,但您可以:

printf("%s% 38s\n", "Filename:", filename.c_str());
// ^^^^^^^^

c_str() member functionconst char* 返回到封装的 C 字符串。

关于传递字符串的 C++ 非 POD 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com