在 Qt 中将 `\oct` 转换为 `char`
converting `\oct` to `char` in Qt
我有一个像
这样的字符串
QString result ("very much text\374more Text");
和 backslash-int-int-int
表示以八进制数编写的字符。在本例中,它是 ü
。我想要 char ü
而不是反斜杠表示。
那是我试过的:
while (result.contains('\'))
if(result.length() > result.indexOf('\') + 3)
{
bool success;
int i (result.mid(result.indexOf('\') + 1, 3).toInt(&success, 8));
if (success)
{
//convert i to a string
QString myStringOfBits ("\u" + QString::number(i, 16));
//QChar c = myStringOfBits.toUtf8();
//qDebug() << c;
}
}
我是菜鸟,我知道
默认情况下,qt 中的所有代码都应该是 utf8,因此您可以将 ü 放在字符串中。
假设我们有一个结果字符串:
QString result ("Ordner mit \246 und \214"); //its: "Ordner mit ö and Ö"
有一个解决方案:
result = QString::fromLatin1("Ordner mit \246 und \214");
但是你不能输入变量。如果你想放入一个变量,你可以使用 (char)
到 (decimal)octal
到它的 char 等价物:
while (result.contains("\ ")) //replace spaces
result = result.replace("\ ", " ");
while (result.contains('\')) //replace special characters
if(result.length() > result.indexOf('\') + 3)
{
bool success;
int a (result.mid(result.indexOf('\') + 1, 3).toInt(&success, 8)); //get the octal number as decimal
//qDebug() << a; //print octal number
//qDebug() << (char)a; //qDebug() will print "" because it can't handle special characters
if (success)
{
result = result.mid(0, result.indexOf('\')) +
(char)a + //replace the special character with the char equivalent
result.mid(result.indexOf('\') + 4);
}
}
qDebug()
不会显示特殊字符,但 GUI 会:
所以它有效:)感谢大家
我有一个像
这样的字符串QString result ("very much text\374more Text");
和 backslash-int-int-int
表示以八进制数编写的字符。在本例中,它是 ü
。我想要 char ü
而不是反斜杠表示。
那是我试过的:
while (result.contains('\'))
if(result.length() > result.indexOf('\') + 3)
{
bool success;
int i (result.mid(result.indexOf('\') + 1, 3).toInt(&success, 8));
if (success)
{
//convert i to a string
QString myStringOfBits ("\u" + QString::number(i, 16));
//QChar c = myStringOfBits.toUtf8();
//qDebug() << c;
}
}
我是菜鸟,我知道
默认情况下,qt 中的所有代码都应该是 utf8,因此您可以将 ü 放在字符串中。
假设我们有一个结果字符串:
QString result ("Ordner mit \246 und \214"); //its: "Ordner mit ö and Ö"
有一个解决方案:
result = QString::fromLatin1("Ordner mit \246 und \214");
但是你不能输入变量。如果你想放入一个变量,你可以使用 (char)
到 (decimal)octal
到它的 char 等价物:
while (result.contains("\ ")) //replace spaces
result = result.replace("\ ", " ");
while (result.contains('\')) //replace special characters
if(result.length() > result.indexOf('\') + 3)
{
bool success;
int a (result.mid(result.indexOf('\') + 1, 3).toInt(&success, 8)); //get the octal number as decimal
//qDebug() << a; //print octal number
//qDebug() << (char)a; //qDebug() will print "" because it can't handle special characters
if (success)
{
result = result.mid(0, result.indexOf('\')) +
(char)a + //replace the special character with the char equivalent
result.mid(result.indexOf('\') + 4);
}
}
qDebug()
不会显示特殊字符,但 GUI 会:
所以它有效:)感谢大家