QString复制

时间:2012-03-02 17:29:27

标签: c++ qt

这个问题可能很基本,但今天我遇到了一个错误说

“错误:将'const QChar'作为'此''参数传递给'QChar& QChar :: operator =(const QChar&)'丢弃限定符”

“我不知道这个分配如何取消Qt ide预定义的字符串到字符串复制的资格”。

当我使用以下代码将所需数据从一个字符串复制到另一个字符串时

for(int i=reqposition;;i++)
{
    if(data.at(i)==',')
        break;

    temp.at(j)=data.at(i);  // ERROR IS HERE
    j++;
}

此代码中存在的问题是什么。是否有任何其他有效的方法将数据从一个字符串从指定索引复制到另一个字符串。 我该如何解决这个问题。

谢谢你的时间!

4 个答案:

答案 0 :(得分:4)

const QChar QString::at(int position);

问题是你没有分配给字符串;您正在分配const QChar来电的QString::at(int)结果。

您想要一个可修改的引用:来自QString documentation:

  

QCharRef QString :: operator [](int position)返回at处的字符   字符串中指定的位置作为可修改的引用。   示例:QString str;

     

if(str [0] == QChar('?'))        str [0] = QChar('_');返回值的类型为QCharRef,是QString的辅助类。当你得到一个QCharRef类型的对象时,你   可以使用它就像它是QChar&amp ;.如果你指定它,   赋值将应用于QString中的字符   得到了参考。

答案 1 :(得分:1)

QString :: at返回const QChar

使用temp[j]=data.at(i);

答案 2 :(得分:1)

您可能正在寻找QString here中的mid方法:

  

返回一个字符串,该字符串包含此字符串的n个字符,从指定的位置索引开始。

答案 3 :(得分:0)

这是拆分代码的片段吗? 在这种情况下最好不要使用QString.split函数吗?