我试图在文件夹中搜索文件名,所以这是我到达的代码,当我在strcmp
中使用普通文本字符串“file.txt”时,它工作得很好但是当我将字符串更改为{to_string(ticketid) + ".txt"}
时它不起作用并且它开始了向我展示这个错误
“没有用于调用strcmp的匹配函数”
这是正在运行的代码:
DIR *dir;
struct dirent *ent;
if ((dir = opendir ("added/"))) {
while ((ent = readdir (dir))) {
if(strcmp (ent->d_name, "file.txt")==0)
flag++;
}
closedir (dir);
}
然后当我试图测试这个代码时,它没有用
DIR *dir;
struct dirent *ent;
if ((dir = opendir ("added/"))) {
while ((ent = readdir (dir))) {
if(strcmp (ent->d_name, to_string(ticketid) + ".txt")==0)
flag++;
}
closedir (dir);
}
任何人都可以帮助我如何做第二个代码工作,因为文件名链接到票证ID,这是一个“int”
strcmp
用于“C字符串”,而不是用于C ++ std::string
s。
这比你想象的要简单:
if (ent->d_name == to_string(ticketid) + ".txt")
您可以使用“file.txt”作为参数,因为它是const char[]
类型的字符串文字,它衰减到const char*
,这是函数所期望的。 to_string(ticketid) + ".txt"
表达式为std::string
类型,不能提供给strcmp
函数。如果你想保持strcmp
函数只需使用字符串.c_str()成员函数:
if(strcmp(ent->d_name, (to_string(ticketid) + ".txt").c_str()) == 0)
话虽这么说你应该更喜欢std::string到字符数组。