我想在我的程序中使用switch-case但编译器会生成错误.我如何使用该switch语句QString?
编译器给我这个错误:
switch expression of type 'QString' is illegal
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
bool isStopWord( QString word )
{
bool flag = false ;
switch( word )
{
case "the":
flag = true ;
break ;
case "at" :
flag = true ;
break ;
case "in" :
flag = true ;
break ;
case "your":
flag = true ;
break ;
case "near":
flag = true ;
break ;
case "all":
flag = true ;
break ;
case …Run Code Online (Sandbox Code Playgroud) 我有一个QJsonObject数据,并希望转换为QString.我怎样才能做到这一点?在Qt中搜索过帮助,它只能将QJsonObject转换为QVariantMap ...
提前致谢.
所有人都喜欢
QString("Put something here %1 and here %2")
.arg(replacement1)
.arg(replacement2);
Run Code Online (Sandbox Code Playgroud)
但是只要你有最微小的机会replacement1实际包含%1甚至是%2任何地方,事情就会变得痒痒.然后,第二个QString::arg()将仅替换重新引入%1或两个%2事件.无论如何,你不会得到"%1"你可能想要的文字.
是否有任何标准技巧可以克服这个问题?
如果你需要一个例子来玩,请拿这个
#include <QCoreApplication>
#include <QDebug>
int main()
{
qDebug() << QString("%1-%2").arg("%1").arg("foo");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这将输出
"foo-%2"
Run Code Online (Sandbox Code Playgroud)
代替
"%1-foo"
Run Code Online (Sandbox Code Playgroud)
可能是预期的(不是).
qDebug() << QString("%1-%2").arg("%2").arg("foo");
Run Code Online (Sandbox Code Playgroud)
给
"foo-foo"
Run Code Online (Sandbox Code Playgroud)
和
qDebug() << QString("%1-%2").arg("%3").arg("foo");
Run Code Online (Sandbox Code Playgroud)
给
"%3-foo"
Run Code Online (Sandbox Code Playgroud) 如何使用QString通过代码(例如"4FF0")指定unicode字符?我试过QString s("\u4FF0");但它只输出一个问号.知道怎么做吗?
编辑:
它的工作原理是这样,但是有更直接的方法吗?
std::wstring str = L"\u4FF07";
QString s = QString::fromStdWString(str));
Run Code Online (Sandbox Code Playgroud) 我有一个lots\t of\nwhitespace\r\n 我简化的字符串 ,但我仍然需要摆脱字符串中的其他空格.
QString str = " lots\t of\nwhitespace\r\n ";
str = str.simplified();
Run Code Online (Sandbox Code Playgroud)
我可以erase_all(str, " ");在提升中做到这一点,但我想留在qt.
我创建了一个加密/解密程序,加密时我将加密的QByteArray存储在一个文本文件中.
在尝试解密时,我检索它然后将其放入解密方法,问题是我需要一种方法将其转换为QByteArray 而不更改格式,否则它将无法正确解密.我的意思是,如果文件给我一个1234的加密值,我将1234.toLatin1()它转换为QByteArray,它改变了值,解密不起作用.有什么建议?
我的代码:
QFile file(filename);
QString encrypted;
QString content;
if (file.open(QIODevice::ReadOnly)) {
QTextStream stream( &file );
content = stream.readAll();
}
encrypted = content.replace("\n", "");
qDebug() << encrypted; // Returns correct encrypted value
QByteArray a;
a += encrypted;
qDebug() << "2 " + a; // Returns different value than previous qDebug()
QByteArray decrypted = crypto.Decrypt(a, key);
return decrypted;
Run Code Online (Sandbox Code Playgroud) 我想知道如何在QML中使用一些字符串来填充一些参数?在Qt中有这样的事情:
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
Run Code Online (Sandbox Code Playgroud) 我有一个像这样使用QProcess的代码.
int main(int argc, char *argv[])
{
int status=0;
QProcess pingProcess;
QString ba;
QString exec = "snmpget";
QStringList params;
params << "-v" << "2c" << "-c" << "public" << "10.18.32.52" << ".1.3.6.1.4.1.30966.1.2.1.1.1.5.10";
status=pingProcess.execute(exec, params);
pingProcess.close();
}
Run Code Online (Sandbox Code Playgroud)
这输出以下内容.
SNMPv2-SMI::enterprises.30966.1.2.1.1.1.5.10 = STRING: "0.1"
Run Code Online (Sandbox Code Playgroud)
我想把这个输出作为字符串.我搜索了这个,我找不到解决方案.提前致谢.
我有这些网址字符串
文件:///home/we/Pictures/neededWord/3193_n.jpg
文件:///home/smes/Pictures/neededWord/jds_22.png
文件:///home/seede/kkske/Pictures/neededWord/3193_n.jpg
我想从每个中提取"neededWord".从它们看来,图像的名称总是在"neededWord"之后,字符串中的变化部分在"neededWord"之前.我想到的方法是使用右边的"/"分隔符拆分字符串,并在结果QstringList中取第二个元素.那么如何从右分裂,还是有更好的方法呢?
我目前正在开发一个更大的项目,其中"逻辑"在标准C++中实现,所有字符串都在处理,std::wstringUI部分使用Qt实现,因此必然QString(奖励问题:这是真的吗?).
连接这两个世界的最佳方式是什么?
我知道我可以用类似的东西
std::wstring wideString;
QString qtString = QString::fromStdWString(wideString);
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方式,涉及更少的打字.一个用户定义的操作员出现在我的脑海中,但我没有足够的经验来解决这个问题.
如果有人能指出我正确的方向,我会很高兴的.
qstring ×10
qt ×10
c++ ×5
qt4 ×2
placeholder ×1
qbytearray ×1
qjsonobject ×1
qml ×1
qprocess ×1
split ×1
stdout ×1
unicode ×1
wstring ×1