如何将字符串数组传递给 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::array
或 std::vector
?
我不知道,但我会调查的。到目前为止,在 c++ 中我只使用了向量和 c 样式的数组。
【参考方案1】:
永远不要在 QtConcurrent::run 中使用 C 样式数组。请改用 C++ std::array。谢谢杰斯珀·尤尔!
【讨论】:
以上是关于如何将字符串数组传递给 QtConcurrent::run?的主要内容,如果未能解决你的问题,请参考以下文章
如何将字符串数组动态传递给Java中的SQL“IN”子句? [复制]
如何将分隔符数组传递给 Regex.Split 函数? [关闭]