qt中 建立一个QString数组 将一串字符串每两个字符赋值给数组中的一个元素
时间: 2024-03-02 17:52:41 浏览: 150
可以通过以下代码实现:
```cpp
QString str = "HelloWorld";
int len = str.length();
QStringList strArr;
for(int i = 0; i < len; i+=2) {
strArr.append(str.mid(i, 2));
}
```
这段代码将字符串 "HelloWorld" 每两个字符截取一次,并存储到一个QStringList数组中,每个元素都是长度为2的字符串。
相关问题
在qt中,怎么将在界面输入的字符串赋值给一个数组
在 Qt 中,你可以使用 `QLineEdit` 控件来获取用户在界面上输入的字符串,然后将其赋值给数组。
以下是一个简单的示例代码:
```cpp
// 假设你有一个 QLineEdit 控件和一个 QPushButton 按钮
QLineEdit *lineEdit = new QLineEdit(this);
QPushButton *button = new QPushButton("确定", this);
// 连接按钮的 clicked 信号到槽函数
connect(button, &QPushButton::clicked, this, [=]() {
// 获取用户在 QLineEdit 中输入的字符串
QString inputStr = lineEdit->text();
// 将字符串转换为 QByteArray 类型,方便操作
QByteArray byteArray = inputStr.toUtf8();
// 定义一个 char 类型的数组,并将 QByteArray 中的数据复制到数组中
char array[100];
memcpy(array, byteArray.constData(), qMin(byteArray.size(), (int)sizeof(array)));
// 输出数组中的内容
qDebug() << array;
});
```
在这个示例中,我们首先获取用户在 `QLineEdit` 中输入的字符串,然后将其转换为 `QByteArray` 类型,并定义一个 `char` 类型的数组。最后使用 `memcpy` 函数将 `QByteArray` 中的数据复制到数组中,并输出数组中的内容。
需要注意的是,这里的数组大小是 100,如果用户输入的字符串超过了数组的大小,则只会复制部分数据。因此,实际应用中需要根据实际情况来确定数组大小。
给QString 变量赋值中文字符串,明明字符串中没有换行符,为什么总是提示有换行符
在Qt中,特别是当你使用QString对象存储中文字符串时,可能会遇到显示上似乎包含换行符的情况。这是因为Qt内部是以宽字符(Unicode)的形式存储字符串的,而中文字符通常占用两个字节(宽度)。当系统或IDE默认的终端或控制台宽度不足以显示所有字符时,会自动插入换行以适应屏幕。
例如,如果你有一个只包含四个汉字的字符串,如果按照ASCII字符宽度计算,实际长度可能不满一行,但由于每个汉字占两个字节,实际占用的宽度可能超过了视窗的列宽,所以会显示成两行。
解决这个问题的方法有两种:
1. **调整终端窗口宽度**:确保终端或控制台有足够的宽度来完整显示含有中文的字符串,可以使用命令行工具如`printf`设置终端列宽或者在集成开发环境中修改编辑器的配置。
2. **输出时指定格式**:使用`QString::toLocal8Bit()`将宽字符转换回UTF-8编码的普通字符串再输出,这将按每个字符显示,不会因宽度原因自动换行。
```cpp
QString chineseString = "你好,世界";
// 转换成UTF-8并打印
qDebug() << QString::fromWCharArray(chineseString.toLocal8Bit()).toStdString();
```
阅读全文