在C ++中操作QStringList

时间:2017-08-10 10:17:11

标签: c++ qt cmd qstring

我有一个名为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

2 个答案:

答案 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()