我想在字符串上使用.arg().这是一个例子:
qDebug() << QString("%11%2").arg(66).arg(77);
Run Code Online (Sandbox Code Playgroud)
我想得到输出,66177但当然这不是实际输出,因为%11被解释为占位符#11而不是占位符#1后跟一个文字1.
有没有比以下更好的解决方案?
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
Run Code Online (Sandbox Code Playgroud) 我有一个包含"09338.712001"的QString myNumber.当我做:
myNumber.toDouble();,它返回9338.71,但我希望double是原始值,即09338.712001.有谁知道如何让toDouble返回的double与QString具有相同的精度?谢谢.
我想格式化一个整数QString.我想总是有6个号码.例如,"1"应为"000001","12"应为"000012".
我试着这样做printf(%06d, number).所以我写了这个
QString test;
test = QString("%06d").arg(QString::number(i));
qDebug()<<test;
我是在循环中实现的for.但是因为我有以下情况它不起作用:
"0d""1d""2d""3d"......
有人知道怎么做吗?
我有一个文本表格:
Last Name:SomeName, Day:23 ...etc
Run Code Online (Sandbox Code Playgroud)
从姓氏:SomeName,我想获得姓氏,并单独SomeName.
我试过使用QRegularExpression,
QRegularExpression re("(?<label>\\w+):(?<text>\\w+)");
Run Code Online (Sandbox Code Playgroud)
但我得到了结果:
QString label = match.captured("label") //it gives me only Name
Run Code Online (Sandbox Code Playgroud)
我想要的是任何文字,直到":"为标签,然后是文本.
有任何想法吗?
QString::number(int)每秒多次打电话.它非常慢:似乎每次都分配一个新的字符串.尝试使用setNum相同的字符串代替,仍然没有喜悦.原来的长问题:
我有一大堆数字(比如整数),我想将它们格式化为文本,然后(可能不会立即)写入文件.天真的方式看起来像这样大约1:
QString allData;
foreach(const int & value, values) {
allData += QString::number(value);
allData += '\n';
}
Run Code Online (Sandbox Code Playgroud)
我机器上的150000整数需要大约280ms,这对我来说似乎很重要.我想这是因为被调用150000次并且每次都分配新的字符串.当我尝试使用(不分配内存)时,这被证实是问题的根源.QString::numberitoa
[not-cute]解决方案QString allData;
char buffer[100]; // <-------
foreach(const int & value, values) {
_itoa_s(value, buffer, sizeof(buffer), 10); // <-------
allData += buffer;
allData += '\n';
}
Run Code Online (Sandbox Code Playgroud)
对于相同的150000个整数(大约快4倍),这需要大约70ms,这对我来说是现在可以接受的(我想我也可以使用字符串连接做一些事情,但是让我们把它留在这个问题之外)
但我不喜欢我必须使用一些不标准的,可能已被弃用的,可能是不可移植的2功能(并不是说这看起来很难看).
然后我记得还有一个实例方法:QString::setNum.我希望我可以使用与以下相同的模式itoa:只分配一个字符串并每次修改它. …
我使用用户输入的URL作为文本来初始化QUrl对象.后来我想将QUrl转换回字符串以显示它并使用正则表达式进行检查.只要用户没有输入任何百分比编码的URL,这就可以正常工作.
为什么以下示例代码不起作用?
qDebug() << QUrl("http://test.com/query?q=%2B%2Be%3Axyz%2Fen").toDisplayString(QUrl::FullyDecoded);
Run Code Online (Sandbox Code Playgroud)
它根本不解码任何百分比编码的字符.它应该打印"http://test.com/query?q=++e:xyz/en"但实际打印"http://test.com/query?q=%2B%2Be%3Axyz%2Fen".
我还尝试了许多其他方法,如fromUserInput(),但我无法在Qt5.3中使代码正常工作.
有人可以解释我如何做到这一点,以及为什么上面的代码不起作用(即显示解码的URL),即使使用QUrl :: FullyDecoded?
UPDATE
获取fromPercentEncoding()提示后,我尝试了以下代码:
QUrl UrlFromUserInput(const QString& input)
{
QByteArray latin = input.toLatin1();
QByteArray utf8 = input.toUtf8();
if (latin != utf8)
{
// URL string containing unicode characters (no percent encoding expected)
return QUrl::fromUserInput(input);
}
else
{
// URL string containing ASCII characters only (assume possible %-encoding)
return QUrl::fromUserInput(QUrl::fromPercentEncoding(input.toLatin1()));
}
}
Run Code Online (Sandbox Code Playgroud)
这允许用户输入unicode URL和百分比编码的URL,并且可以解码这两种URL以进行显示/匹配.但是,百分比编码的URL在QWebView中不起作用... Web服务器响应不同(它返回了不同的页面).很明显,QUrl :: fromPercentEncoding()不是一个干净的解决方案,因为它有效地改变了URL.我可以在上面的函数中创建两个QUrl对象...一个直接构造,一个使用fromPercentEncoding()构建,第一个用于QWebView,后者仅用于显示/匹配......但这看起来很荒谬.
我正在考虑正则表达式,但这并不完全可读。还有一些功能s.toUpper()需要考虑,可能还有其他事情。
那么将 QString 中单词的首字母大写的最佳方法是什么?
我正在尝试用更轻的替代品( / )QString来代替重的类别。问题是 Qt 小部件无论如何都不会使用这些类。例如,该方法需要作为输入参数,使我的改进毫无用处。QStringRefQStringViewQLabel::setTextconst QString&
我对这种差异感到困惑。这是故意的吗?这有什么理由吗?QStringView如果一天结束时没有人消费它们,那么用例应该是什么?
我在 QML 中有一个代码片段,它应该在 screen.text 中查找正则表达式“Calling”,如果找不到,它才会更改 screen.text。不幸的是,QML/QString文档中的文档不清楚.
Button{
id: call
anchors.top: seven.bottom
anchors.left: seven.left
text: "Call"
width: 40
onClicked:{
if(screen.text.toString().startsWith("Calling" , false))
return;
else
screen.text = "Calling " + screen.text
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
file:///home/arnab/workspace/desktop/examples/cellphone.qml:127: TypeError: 表达式 'screen.text.toString().startsWith' [undefined] 的结果不是函数。
如何从/ home/admin/job0/Job中删除/ Job
QString name = "/home/admin/job0/Job"
Run Code Online (Sandbox Code Playgroud)
我想在"/"之后删除最后一个字符串