QT-如何从QString中获取字符

QT - How can I get characters from QString?

本文关键字:获取 字符 QString QT-      更新时间:2023-10-16

我有几个字符串存储"RNA,DNA"序列。我需要从这些字符串中获取字符并进行比较。

下面你可以看到我代码的一部分:

QFile file (filePath);
if (!file.open(QIODevice::ReadOnly)){
    QMessageBox::information(0,"info",file.errorString());
}
QString line, element;
QStringList list;
int counter;
while(!file.atEnd()){
    line = file.readLine();
    list = line.split(QRegExp("[rn]"),QString::SkipEmptyParts);
    for(counter = 0; counter < list.size();  counter++){
        element=list.at(counter);
        textfile_.append(element);
    }
}

现在,我想做的是,逐个字符地对"元素"变量进行切片,并将这些字符存储到变量、字符串、向量或其他任何东西中。但我必须稍后联系他们,以便能够对他们进行比较。

简单样本:

  • 元素1:"actrcddeactsfgcstrsac"
  • 元素2:"actcctdfstrtasc"
  • 元素3:"sdfccwertwerwewerdf"
  • 元素4:"werwercdwttewrweddfer"

比方说,对于element1,我需要的是这样的东西:

  • char[0][0]=a
  • char[0][1]=c
  • char[0][2]=t

  • 。。。

有几种方法可以做到这一点。以下是其中的一些:

方法1-使用字符串列表

QString element1("actrcddeactsfgcstrsac");
QList<QString> matrix;
matrix.push_back(element1);
char c = matrix[0][0].toAscii(); // returns 'a'

方法2-使用二维数组。我会使用std::vector来存储字符:

QString element1("actrcddeactsfgcstrsac");
// Init the 100x100 matrix
std::vector<std::vector<char> > matrix( 100, std::vector<char>(100, 0));
// Init the first row.
for (int i = 0; i < s.size(); i++) {
    matrix[0][i] = element1.at(i).toAscii();
}
char c = matrix[0][0]; // returns 'a'