class ZHtoPY{ ZHtoPY(); public: QStringList listPY; //拼音列表 static QStringList ZH2PY(QString strChinese); }; inline ZHtoPY::ZHtoPY(){ //从配置文件读取拼音数组 QFile file(":/tt/ChineseToPinyin.json"); if (file.open(QFile::ReadOnly | QFile::Text)) { QString str = file.readAll(); listPY = str.split(" "); } } inline QStringList ZHtoPY::ZH2PY(QString strChinese){ // QString strChinese = "动臂"; //获取中文字符 QStringList list; for (int i = 0; i < strChinese.length(); i++) { int unicode = QString::number(strChinese.at(i).unicode(), 10).toInt(); //将每个汉字转换为十进制的unicode编码 if (unicode >= 0x4E00 && unicode <= 0x9FA5) //如果是中文则转换 { //这里的listPY就是按照UNICODE每个中文对应的拼音数组 list.append(listPY.at(unicode - 0x4E00)); } else { list.append(strChinese.at(i)); } } return list; } 报错 “.at”的左边必须有类/结构/联合
时间: 2024-04-15 18:31:00 浏览: 30
根据你提供的代码,我注意到 `listPY` 是 `ZHtoPY` 类的一个成员变量,但是你在 `ZHtoPY::ZH2PY` 函数中使用了 `listPY.at()`。然而,问题出在你没有在 `ZH2PY` 函数内部访问 `listPY` 成员变量的方式上。
你可以通过在 `ZH2PY` 函数内部使用 `this->listPY.at()` 来访问 `listPY` 成员变量。这样修改后的代码如下:
```cpp
inline QStringList ZHtoPY::ZH2PY(QString strChinese){
// ...
// 这里是修改的部分
list.append(this->listPY.at(unicode - 0x4E00));
// ...
}
```
或者,你也可以直接使用成员访问操作符 `.` 来访问 `listPY` 成员变量,而无需使用 `this` 指针:
```cpp
inline QStringList ZHtoPY::ZH2PY(QString strChinese){
// ...
// 这里是修改的部分
list.append(listPY.at(unicode - 0x4E00));
// ...
}
```
请根据你的喜好选择其中一种修改方式,并重新编译运行你的代码。这样应该能够解决报错问题。如果问题仍然存在,请提供更多的错误信息或者相关代码细节,以便我能够更好地帮助你解决问题。
相关问题
qt qstring ./file/head 如何切割出错后文件
在 Qt 中,可以使用 QFile 和 QTextStream 类来读取文件内容,然后使用 QString 的 split() 函数进行字符串切割。
以下是一个示例代码,可以实现在 Qt 环境下切割出错后的文件内容:
```cpp
#include <QFile>
#include <QTextStream>
#include <QStringList>
QStringList splitFile(QString filePath, int lineNum)
{
QStringList result;
QFile file(filePath);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
QString line;
for (int i = 1; i <= lineNum; i++) {
if (in.atEnd()) {
break;
}
line = in.readLine();
result.append(line);
}
if (!in.atEnd()) {
while (!in.atEnd()) {
line = in.readLine();
result.append(line);
}
}
}
return result;
}
```
在这个示例代码中,splitFile() 函数接受两个参数:文件路径和需要切割的行数。如果文件的行数小于等于指定的行数,函数返回整个文件内容;否则,函数返回指定行数之后的所有内容。
使用该函数可以实现如下功能:
```cpp
QStringList content = splitFile("/path/to/file.txt", 20);
```
该代码将读取文件 `/path/to/file.txt` 的内容,并将前 20 行存储到 `content` 字符串列表中。如果文件的行数小于等于 20,列表中将包含整个文件的内容;否则,列表中将包含第 21 行至文件末尾的所有内容。
qt 将字符串"file:///C:/Users/ADMIN/Desktop/work/新MP3/333.mp3" 去除内容file:///
Qt是一个跨平台的C++应用程序开发框架,它提供了丰富的功能和工具,用于开发图形用户界面、网络通信、数据库操作等应用程序。Qt的特点包括易用性、可扩展性和跨平台性。
要将字符串"file:///C:/Users/ADMIN/Desktop/work/新MP3/333.mp3"去除内容"file:///",可以使用Qt提供的QString类的相关方法来实现。具体步骤如下:
1. 创建一个QString对象,将原始字符串赋值给它。
2. 使用QString的remove方法,将"file:///"替换为空字符串。
以下是示例代码:
```cpp
QString originalString = "file:///C:/Users/ADMIN/Desktop/work/新MP3/333.mp3";
originalString.remove("file:///");
```
这样,originalString中的内容就变成了"C:/Users/ADMIN/Desktop/work/新MP3/333.mp3"。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)