qt5.7以int形式读取csv
时间: 2024-10-18 14:09:23 浏览: 18
qtcsv:用于在Qt中读取和写入csv文件的库
在Qt5.7中,如果你想以`int`形式读取CSV文件,你需要先读取到字符串,然后使用`toInt()`函数转换。但由于CSV文件通常包含文本数据,可能会遇到无法直接转换的情况,比如含有逗号的数字、非数字字符等。因此,需要在转换前做适当的检查。
首先,保持之前读取CSV文件的部分不变,得到字符串类型的二维数组`data`。然后,在处理每个元素时,可以尝试将其转换为`int`,如果转换成功则保留,失败则记录错误并跳过该值。
```cpp
QVector<int> parseIntsFromCsvFile(const QString& filePath) {
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Failed to open CSV file: " + file.errorString();
return QVector<int>();
}
QTextStream in(&file);
QStringList headerLine;
QVector<int> data;
// 读取文件头部作为列名
if (in.readLine()) { // 跳过表头
headerLine = in.readLine().split(',');
}
while (!in.atEnd()) {
QStringList line = in.readLine().split(',');
QVector<int> rowData;
for (const QString& value : line) {
int num = value.toInt();
if (num.isValid()) {
rowData << num; // 如果转换成功,加入rowData
} else {
qDebug() << "Invalid integer found at line " << in.lineNumber() << ", column " << headerLine.indexOf(value);
}
}
data.append(rowData); // 添加整数行至总数据
}
file.close();
return data;
}
```
注意,这只是一个基本的示例,实际应用中可能需要根据需求做更多的错误处理,比如处理缺失值或使用默认值替换。
阅读全文