c++ - QT - 如何从 QString 中获取字符?

标签 c++ qt

我有几个存储“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);
    }
}

现在,我想要做的是,将“元素”变量一个字符一个字符地切片,并将这些字符存储到变量、字符串、 vector 或其他任何内容中。但我必须稍后联系他们才能比较它们。

Simple sample:

  • element1: "actrcddeactsfgcstrsac"
  • element2: "actcctdfascrtasc"
  • element3: "sdfccwertwerwewerdf"
  • element4: "werwercdwttewrweddfer"

lets say for the element1 what I need is something like that:

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

  • ...

最佳答案

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

方法一 - 使用字符串列表

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'

关于c++ - QT - 如何从 QString 中获取字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957709/

相关文章:

c++ - 使用 QComboBox C++ 进行过滤

c++ - 关于编译器输出的异或浮点值和一般转换问题

c# - QT中如何处理C#的COM事件?

python - PySide/Cython 和 GIL 多线程使用

c++ - 跨线程同步C++错误日志文件

c++ - 如何将库的 .pc 文件添加到特定目录?

c++ - GCC_ARM 的路径 (mbed_settings.py)

python - QT设计器没有安装uic程序来查看应用程序中的代码

c++ - Qt MouseMoveEvent 仅在按下鼠标按钮时触发

c++ - 如何在子部件而不是父部件上画一条线?