Qt中怎样分割以'\r\n'或'\n'间隔的字符串
时间: 2023-07-28 12:31:29 浏览: 592
可以使用`QString::split()`函数来分割以`\r\n`或`\n`间隔的字符串。示例代码如下:
```cpp
QString str = "hello\r\nworld\nQt";
QStringList list = str.split(QRegExp("[\r\n]+"));
for (int i = 0; i < list.size(); ++i) {
qDebug() << list.at(i);
}
```
上述代码中,首先定义了一个包含了`\r\n`和`\n`的字符串`str`,然后使用`QString::split()`函数将其分割成一个`QStringList`类型的列表`list`,其中`QRegExp("[\r\n]+")`表示以`\r\n`或`\n`作为分隔符。最后通过循环遍历列表打印出每个分割后的字符串。
相关问题
Qt中怎样分割以'\r\n'或'\n'间隔的字符串,要求如果有多个空行时不会被忽略掉
在Qt中,可以使用QString类的split函数来分割字符串。split函数的第一个参数是分割的字符,第二个参数是分割的方式。如果想要保留空行,可以使用QString::KeepEmptyParts参数。
下面是一个例子:
```cpp
QString str = "line1\r\n\r\nline2\nline3";
QStringList lines = str.split(QRegExp("[\r\n]+"), QString::KeepEmptyParts);
for (int i = 0; i < lines.size(); i++) {
qDebug() << lines[i];
}
```
输出结果如下:
```
line1
line2
line3
```
可以看到,空行被保留了。
Qt中怎样分割以'\r\n'或'\n'间隔的字符串"18\r\n\r\n\r\n19",要求如果有多个空行时不会被忽略掉,使用c++实现
在Qt中,你可以使用QString的`split()`方法来分割以`\r\n`或`\n`间隔的字符串。具体实现如下:
```c++
#include <QString>
#include <QDebug>
#include <vector>
int main() {
QString s = "18\r\n\r\n\r\n19";
QStringList lines = s.split(QRegExp("\r\n|\n"));
// 将QStringList转换为vector<string>
std::vector<std::string> vec;
for (int i = 0; i < lines.size(); ++i) {
vec.push_back(lines[i].toStdString());
}
// 输出vector中的内容
for (auto it = vec.begin(); it != vec.end(); ++it) {
qDebug() << QString::fromStdString(*it);
}
return 0;
}
```
这里使用了`QString`的`split()`方法来分割字符串,并将其存储到一个`QStringList`中。然后将`QStringList`转换为`std::vector<std::string>`,最后遍历输出vector中的内容。
注意,这里使用了正则表达式`\r\n|\n`来匹配换行符。如果有多个空行,也会被正确地分割并保留。
阅读全文