gpt4 book ai didi

C++ snprintf "cannot pass objects of non-POD type"

转载 作者:太空狗 更新时间:2023-10-29 23:24:46 27 4
gpt4 key购买 nike

我正在尝试编写一个具有配置和 key 文件的程序。配置文件读取输入到 key 文件中的内容,根据需要解析和执行 key 值。

我收到一个错误:警告:无法通过“...”传递非 POD 类型“struct std::string”的对象;调用将在运行时中止。

我在这一行收到错误:

snprintf(command, 256, "tar -xvzf %s %s", destination, source);
system(command);

尝试更好地解释更多代码:

std::string source = cfg.getValueOfKey<std::string>("source");
std::string destination = cfg.getValueOfKey<std::string>("destination");
int duration = cfg.getValueOfKey<int>("duration");
int count, placeHolder, placeHolderAdvanced;
count = 1;
char command[256];

snprintf(command, 256, "tar -xvzf %s %s", destination, source);
system(command);

//Creates folder 1.
snprintf(command, 256, "mkdir %i", count);
system(command);

//Removes the last folder in the group.
snprintf(command, 256, "rm -rf %i", duration);
system(command);

关于我做错了什么,或者我应该在哪里寻找的任何建议?

谢谢!

最佳答案

snprintfstd::string 一无所知。在这种情况下,它需要以空字符结尾的 C 字符串,即指向 char 的指针,它们是以空字符结尾的字符序列的开头。您可以通过 c_str() 方法获取 std::string 对象持有的底层空终止字符串:

snprintf(command, 256, "tar -xvzf %s %s", destination.c_str(), source.c_str());

关于C++ snprintf "cannot pass objects of non-POD type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18319619/

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