如何将字符串数组传递给 QtConcurrent::run?

Posted

技术标签:

【中文标题】如何将字符串数组传递给 QtConcurrent::run?【英文标题】:How do you pass a string array into QtConcurrent::run? 【发布时间】:2019-08-14 19:22:48 【问题描述】:

在我的程序中,QtConcurrent Run 不接受我的字符串数组或布尔数组。是否需要将它们转换为 QByteArrays 才能传入数据?

根据文档,这是可行的:

extern QString someFunction(const QByteArray &input);

QByteArray bytearray = ...;

QFuture<QString> future = QtConcurrent::run(someFunction, bytearray);
...
QString result = future.result();

在我的程序中这不起作用:

extern void test(string args[]);
string args[7]="blue";
QFuture<void> future = QtConcurrent::run(test, args);

错误:C2075--数组初始化需要大括号括起来的初始化列表

【问题讨论】:

minimal reproducible example 将有助于说明您的问题。 请用例子说明你的问题 抱歉,我应该在最初的帖子中投入更多精力。 为什么是string args[7] 而不是std::array?为什么您曾经更喜欢原始 C 样式数组而不是 std::arraystd::vector 我不知道,但我会调查的。到目前为止,在 c++ 中我只使用了向量和 c 样式的数组。 【参考方案1】:

永远不要在 QtConcurrent::run 中使用 C 样式数组。请改用 C++ std::array。谢谢杰斯珀·尤尔!

【讨论】:

以上是关于如何将字符串数组传递给 QtConcurrent::run?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组传递给 mako 模板?

如何将字符串数组动态传递给Java中的SQL“IN”子句? [复制]

如何将分隔符数组传递给 Regex.Split 函数? [关闭]

如何将对象(或关联数组)作为属性值传递给我的 Web 组件

spark-streaming scala:如何将字符串数组传递给过滤器?

如何给SQLSERVER存储过程传递数组参数