我正在尝试编辑fastq文件,该文件只是存储DNA或RNA读数的文本文件。

在文件中,我只需将代码中的“@”编辑为“A”,将“B”编辑为“C”,等等,然后将更改的顺序写入新文件。

但是,在新文件中,引入了一些不可打印的字符(例如'^ F','^ B'等)来代替换行符。这仅在几个地方而不是在所有地方完成,这就是为什么我不确定为什么会这样的原因。

#include <bits/stdc++.h>
#include <fstream>
using namespace std;

int main()
{
    ifstream in;
    ofstream out;
    in.open("file1.fq");
    out.open("newfile1.fq",ios::out|ios::app|ios::ate);
    while(!in.eof())
    {
        string head,plus,seq,qs;
        in>>head>>seq>>plus>>qs;
        if(head[0]!='@')
            continue;
        out<<head<<endl;
        for(int i=0;i<seq.size();i++)
        {
            if(seq[i]=='@')
                seq[i] = 'A';
            else if(seq[i]=='B')
                seq[i] = 'C';
            else if(seq[i] =='F')
                seq[i] = 'G';
            else if(seq[i]=='S')
                seq[i] = 'T';
        }
        out<<seq<<endl;
        out<<"+"<<endl;
        out<<qs<<endl;
    }
    in.close();
    out.close();
}

在这之间,新文件中引入了一些不可打印的字符,例如'^ B','^ F'等,这些字符在输入文件中不存在。

最佳答案

这个问题太老了,但我仍然想回答我的问题。问题不在于代码,而在于硬件。由于通过此代码处理大型文本文件时,由于引入了不可打印的字符,因此安装的新Ram出现了一些问题。

09-10 04:39
查看更多