QT - 如何从QString获取字符?

3

我有几个存储“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("[\r\n]"),QString::SkipEmptyParts);
    for(counter = 0; counter < list.size();  counter++){
        element=list.at(counter);
        textfile_.append(element);
    }
}

现在,我想做的是将“element”变量逐个字符地分割并将这些字符存储到变量、字符串、向量或其他数据结构中。但我必须稍后才能访问它们以进行比较。
简单样例:
- element1: "actrcddeactsfgcstrsac" - element2: "actcctdfascrtasc" - element3: "sdfccwertwerwewerdf" - element4: "werwercdwttewrweddfer"
假设对于element1,我需要的是像这样的东西:
- char[0][0]=a - char[0][1]=c - char[0][2]=t - ...

3
关于QString::at()函数,它会根据指定的字符下标返回相应的QChar字符。 - vahancho
你能否再解释一下?我对qt不是很熟悉。非常感谢。 - Arda Özceviz
1个回答

1

有几种方法可以实现这个目标,以下是其中一些:

方法1 - 使用字符串列表。

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

方法二 - 使用二维数组。我会使用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'

@ArdaÖzceviz,你可能使用的是Qt 5.x版本,其中QChar::fromAscii()函数已经过时。你可以使用QChar::toLatin1()代替。 - vahancho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接