- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究解析器。我想逐个字符地解析文本文件。
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)
有没有简单的方法来归档它?谢谢。
最佳答案
解析文本很快就变成了有状态的事情。如果要将两个字符序列 \
n
识别为换行符 \n
,则比较单个字符 (c = = ft
) 是不够的。您可以记住前一个字符并检查当前和前一个字符。
QString parse(QString const& text)
{
static QChar BACKSLASH('\\');
static QByteArray const SPECIAL_CHARS ("\"'?abfnrtv");
static QString const SPECIAL_QCHARS ("\\\"\'\?\a\b\f\n\r\t\v") ;
QString result;
QChar prev;
for( int i = 0; i < text.size(); ++i)
{
QChar c = text[i];
if( prev == BACKSLASH )
{
int idx = SPECIAL_CHARS.indexOf( c );
if( idx != -1)
{
result.append( SPECIAL_QCHARS[idx] );
}
else
{
result.append( prev );
result.append( c );
}
prev = 0;
}
else
{
result.append( c );
prev = c;
}
}
return result;
}
关于c++ - qstring 到 qchar 特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35350801/
我阅读了文档,上面写着 QChar::isNumber()那个 Returns true if the character is a number (Number_* categories, not
我有一个qulonglong变量,我需要把它转换成QChar。 例如,从数字 65 我应该得到 'A'。 或者,如果有一种解决方案可以将其直接转换为 QString 也很好。 最佳答案 您需要的是 Q
我想将 QString 转换成文件名。因为我希望文件名看起来干净,所以我想用下划线替换所有非字母和非数字。以下代码应该可以做到这一点。 #include #include QString make
我需要将 QChar 转换为 wchar_t 我试过以下方法: #include #include #include using namespace std; int main(int argc
如何优雅的获取digits值? QChar qc('4'); int val=-1; if(qc.isDigit()){ val = qc.toLatin1() - '0'; } 看起来不太好。
在 C++ 中,有一种方法可以将 char 转换为 int 并返回 ascii 值。有没有一种方法可以对 qchar 执行相同的操作?由于 unicode 支持如此多的字符,并且其中一些实际上看起来很
#include #include int main(int argc, char *argv[]) { QCoreApplication a (argc, argv); unsi
我正在构建一个 Qt Gui 应用程序来监视来自串行端口的数据。我正在使用 qextserialport 库。这是我遇到的问题。 void MainWindow::onDataAvailable()
我正在研究解析器。我想逐个字符地解析文本文件。 bool parse(QString fileName, QString fieldTerminator,
我需要将 QChar 传递给需要 wchar_t 的函数: void myFunc(wchar_t wch); 尝试只传递 QChar 失败并出现错误: error: C2664: 'myFunc'
我需要从 QChar 获取 ASCII 代码。 在 Qt 5.2 中,QChar::ToAscii 已被删除。 这是我的代码。如何获取 ASCII 码? QString data; int key;
我想制作加密(稍后解密)用户输入的字符串的程序。这是加密的开始: QString getData = ui->text->toPlainText(); //Data to process std::s
在 Java 中,我能够使用 Unicode.blockOf(Character) 确定特定字符是否为日文汉字。我正在尝试为 QChar 做同样的事情,但找不到相关的功能来做到这一点。我想知道我是否只
我有一个应用程序应该处理各种字符,并在某些时候显示有关它们的信息。我在 QChar、QString 等中使用 Qt 及其固有的 Unicode 支持。 现在我需要 QChar 的代码点以便在 http
我正在尝试为 Code page 437 编写编解码器.我的计划是只传递 ASCII 字符并将剩余的 128 个字符映射到一个表中,使用 utf-16 值作为键。 对于某些组合字符(带点的字母、波浪号
可以告诉我为什么下面的代码会导致这个错误: call of overloaded 'QChar(const char[2])' is ambiguous 和代码: void func(QChar a
我正在研究 qt - 在《C++ GUI Programming With Qt 4》一书中,我试图让所有代码都能正常工作。我在将自定义表格小部件中的内容选择转换为纯文本时遇到问题。 书中现有代码:
我是一名优秀的程序员,十分优秀!