QString 转std::vector<std::string>
时间: 2024-03-19 12:39:22 浏览: 177
QString是Qt框架中的一个类,用于处理字符串。如果你想将QString转换为std::vector<std::string>,可以按照以下步骤进行操作:
1. 首先,将QString转换为std::string。可以使用QString的toStdString()函数来实现这一步骤。
2. 接下来,将std::string转换为std::vector<std::string>。可以使用std::istringstream和std::getline函数来实现这一步骤。具体步骤如下:
```cpp
#include <QString>
#include <vector>
#include <string>
#include <sstream>
std::vector<std::string> QStringToVector(const QString& qstr) {
std::vector<std::string> result;
std::string str = qstr.toStdString();
std::istringstream iss(str);
std::string line;
while (std::getline(iss, line)) {
result.push_back(line);
}
return result;
}
```
这样,你就可以将QString转换为std::vector<std::string>了。
相关问题
QStringList转std::vector<std::string>
QStringList是Qt框架中的一个类,表示一个由QString组成的列表。std::vector是C++ STL中的一个类,表示一个动态数组。将QStringList转换为std::vector<std::string>可以使用以下代码:
```
QStringList qstrList;
qstrList << "one" << "two" << "three";
std::vector<std::string> strVec;
for (const auto& qstr : qstrList) {
strVec.push_back(qstr.toStdString());
}
```
首先定义一个QStringList对象,并向其中添加一些字符串。然后定义一个std::vector<std::string>对象。使用for循环遍历QStringList中的每个QString,将其转换为std::string并添加到std::vector<std::string>对象中。最终得到的strVec就是一个由QStringList转换而来的std::vector<std::string>对象。
QStringList 转std::vector<std::string>
可以通过迭代器将QStringList转换为std::vector<std::string>:
```cpp
#include <QStringList>
#include <vector>
#include <string>
std::vector<std::string> QStringListToVector(const QStringList& list)
{
std::vector<std::string> vec;
vec.reserve(list.size());
for (const auto& str : list) {
vec.push_back(str.toStdString());
}
return vec;
}
```
在此函数中,我们首先创建一个空的std::vector<std::string>,并使用reserve函数预分配所需的空间。然后,我们遍历QStringList并将每个QString转换为std::string,并使用push_back函数将其添加到向量中。
请注意,我们使用toStdString函数将QString转换为std::string。这将返回一个表示QString的UTF-8字符串的std::string。如果您的QString包含非ASCII字符,您可能需要使用其他编码(例如UTF-16)来转换字符串。
阅读全文