Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;Qt5 QDir重命名返回false_C++_Qt5 - Fatal编程技术网

C++ C++;Qt5 QDir重命名返回false

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(

我是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(); ++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";