我有一个名为QStringList
的{{1}},其中包含要复制的文件名。
我想做这个输出:
for%I in("("," C:\ Users \ Nina \ Documents \ A.mp4", " C:\ Users \ Nina \ Documents \ A.srt"," C:\ Users \ Nina \ Documents \ A.txt",")", "复制%I"," C:\ Users \ Nins \ Desktop \ z")
看起来像这样:
for%I in(" C:\ Users \ Nina \ Documents \ A.mp4" " C:\用户\尼娜\文件\ A.srt" " C:\ Users \ Nina \ Documents \ A.txt") 复制%I" C:\ Users \ Nina \ Desktop \ z"
这是我的代码:
filesToCopy
答案 0 :(得分:1)
使用QStringList::join()创建以空格分隔的列表。
而且,为简单起见,您可以使用QString::arg()或其重载来创建具有替换的所需字符串。使用和阅读更为直接,而不是大量的prepend()
和/或append()
来电。
以下是一个例子:
const QString format { R"(for %I in (%1) do copy %I %2)" };
const auto command = format.arg( filesList, destinationDir );
答案 1 :(得分:0)
正如@Azeem所提到的,您可以使用join()
方法:
auto l_files = fileNames.join(", ");
另请注意,宏Q_FOREACH
目前(自Qt 5.7起)不鼓励,将在未来版本的Qt中删除。您应该使用C ++标准的基于范围的循环:
for(auto& fileName : fileNames)
{
doSomething(fileName);
}
如果要迭代const引用,可以使用qAsConst()
。