C++ C++;Qt5 QDir重命名返回false
我是Qt新手,学习如何使用QDir和QFile库重命名文件 我知道如何重命名,我可以这样做,但当我在这个循环中尝试时,它不起作用C++ C++;Qt5 QDir重命名返回false,c++,qt5,C++,Qt5,我是Qt新手,学习如何使用QDir和QFile库重命名文件 我知道如何重命名,我可以这样做,但当我在这个循环中尝试时,它不起作用 QDir editFile; std::cout << "Attempting to chop and put .mp4 onto a regular file.\n"; QString fileNameBuf{argv}; QString fileOriginal{argv}; for(int l{0}; l < fileNameBuf.size(
QDir editFile;
std::cout << "Attempting to chop and put .mp4 onto a regular file.\n";
QString fileNameBuf{argv};
QString fileOriginal{argv};
for(int l{0}; l < fileNameBuf.size(); ++l)
{
if(fileNameBuf.at(l) == '.')
{
fileNameBuf.chop(fileNameBuf.size() - l);
break;
}
}
fileNameBuf.append(".mp4");
if(editFile.rename(argv, fileNameBuf))
std::cout << "Successful\n";
else
std::cout << "did not make it.\n";
QDir编辑文件;
std::cout如果Qt有indexOf()在字符串中查找字符,为什么要使用for()来执行此任务
为什么不使用replace()来更改文件扩展名
QString::replace很容易完成这项任务,因为如果字符串不包含源字符串,它将不起任何作用…我希望您知道文件不是这样工作的。。。仅仅更改文件的扩展名并不意味着它会导致新的有效文件类型
话虽如此。无需重新发明车轮:
查看官方文件:
QFile编辑文件{“foo.txt”};
std::cout如前所述,使用Qt的函数。如果出现此问题,请确保在重命名文件之前未打开该文件。这就是我在这里做错的事情,除非你关闭它或者文件超出范围,否则你将无法重命名它。
感谢所有回复者的见解 我使用了您的代码示例,如果argv
包含有效的文件名或路径+文件名,则该示例有效。它们是有效的路径,但我将尝试几种不同的方法,看看是否可以找出路径的错误。谢谢谢谢你,我会调查的。我只是在学习Qt,并没有意识到我可以使用replace或indexOf,我将毫无疑问地合并它。谢谢
QFile editFile{"foo.txt"};
std::cout << "Attempting to chop and put .mp4 onto a regular file.\n";
if(editFile.rename("foo.mp4"))
std::cout << "Successful\n";
else
std::cout << "did not make it.\n";