【问题标题】:Search QString character by character逐个字符搜索 QString
【发布时间】:2013-09-20 11:51:19
【问题描述】:

我正在尝试使用 while 循环逐个字符地解析 QString 字符,但我不知道如何将单个字符解析为 char 类型。这是我的代码,我知道它不是最佳的:

QString temp = (QString)t[0];
int i = 1;

while (t[i] != " ");
{
    temp.append(t[i]);
    i += 1;
}

我已经看到了 toLocal8bit 函数的强制转换,但无论我尝试什么,我都无法使其适应我的代码。

Qt Creator 显示此错误:

error: conversion from 'const char [2]' to 'QChar' is ambiguous

符合while函数调用

【问题讨论】:

  • 鉴于t[x] 似乎指代某种角色,(QString)t[0] 演员表似乎很可疑。
  • Qt Creator 毫无问题地接受了该转换。最初它给了我一个没有它的错误

标签: qt char qstring


【解决方案1】:

你为什么不试试呢:

QString test = "test";


for(int i = 0; i< test.length(); i++)
{
    if (test.at(i) != " ")
        test.at(i).toLatin1();
}

【讨论】:

  • 使用 at 函数仍然给我同样的错误:“错误:从 'const char [2]' 到 'QChar' 的转换不明确”
  • 这段代码对我来说就像一个魅力,你改编了吗?随意粘贴您的实际代码(或其中的一部分)而不是 sn-p
  • 是的,我通过将 t[i] != " " 更改为 t.at(i) != " " 对其进行了调整,但在调试时再次失败
  • 看来你的演员QString temp = (QString)t[0];不太好用,你真的需要吗?
  • 我修改我的代码只声明temp而不初始化它,我也注释掉了temp.append(t[i]),但是错误仍然存​​在
【解决方案2】:

您可以使用基于 C++ 11 范围的 for 循环

for (auto chr : text)
{
    if (!chr.isDigit()) // for exmpl.
    return false; 
}

【讨论】:

  • 请添加一些解释此代码如何解决问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
相关资源
最近更新 更多