我正在尝试编辑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'等,这些字符在输入文件中不存在。
答案 0 :(得分:0)
这个问题太老了,但我仍然想回答我的问题。问题不在于代码,而在于硬件。安装的新Ram出现了一些问题,因为通过此代码处理大型文本文件时引入了无法打印的字符。