【发布时间】:2025-12-21 19:25:12
【问题描述】:
我正在开发一个解析器。我想逐个字符地解析一个文本文件。
bool parse(QString fileName,
QString fieldTerminator,
QString lineTerminator,
QString encloseChar)
{
QChar ft = *(fieldTerminator.unicode());
QChar lt = *(lineTerminator.unicode());
QChar ec = *(encloseChar.unicode());
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly))
{
qDebug() << file.errorString();
return false;
}
QTextStream inStream(&file);
while(!inStream.atEnd())
{
QChar c;
inStream >> c;
if(c == ft)
qDebug() << "fieldterm";
else if(c == lt)
qDebug() << "lineterm";
else if(c == ec)
qDebug() << "encloseChar";
}
return true;
}
我在将 fieldTerminator 等转换为特殊字符 (QChar::SpecialCharacter) 时遇到问题。
例如:如果我将fieldTerminator = "\n" 传递给函数,ft = '\' (92)
有没有简单的存档方法?谢谢。
【问题讨论】:
-
我不确定你在问什么,当我传入
QString( "\n" )时,我得到lt = 10 '\n'。 -
-__- 有趣:screen 为什么它对我不起作用?
-
因为我误解了问题,请看我的回答。
-
您能否提供使用该功能的示例?与
fieldTerminator = "\n"。或者说fieldTerminator字符串的大小(当你像屏幕截图一样传递数据时)