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 12:31:00 浏览: 28
根据你提供的代码,我注意到 `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));
// ...
}
```
请根据你的喜好选择其中一种修改方式,并重新编译运行你的代码。这样应该能够解决报错问题。如果问题仍然存在,请提供更多的错误信息或者相关代码细节,以便我能够更好地帮助你解决问题。
相关问题
QMap<QString,cv::Mat> TransformationMatrix;//坐标转换矩阵获取所有的key和value
可以使用QMap类的keys()和values()函数来获取所有的key和value。示例代码如下:
```
QList<QString> keys = TransformationMatrix.keys();
QList<cv::Mat> values = TransformationMatrix.values();
```
上述代码将获取TransformationMatrix中所有的key和value,并分别保存在QList对象keys和values中。注意,keys和values中的元素顺序是一致的,即keys[i]对应的value是values[i]。
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 行至文件末尾的所有内容。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)