【发布时间】:2017-06-16 10:31:12
【问题描述】:
我有一个像 ATGCCA... 这样的字符串。 该字符串将被转换为一个字符数组,如 [ATG CCA ...]。 我已经知道 ATG=1 和 CCA=2,并且我将它们定义为双精度。如何将转换后的矩阵保存为双精度? 这是我现在的程序,但它不起作用:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
using namespace std;
int main() {
double ATG=1, CCA=2;
fstream fp("sequence.txt",ios::in);
if(!fp)
{
cerr<<"File can not open!"<<endl;
exit(1);
}
char content,k,l,m;
char a[4]="";
double n;
while(fp>>k>>l>>m){
fp.read(a, sizeof(a) - 1);
n=atof(a);
cout<<a<<" "<<n<<endl;
}
}
我希望将其视为输出:
ATG 1
CCA 2
但我看到的是:
ATG 0
CCA 0
感谢您的帮助!
【问题讨论】:
-
“我已经知道 ATG=1 和 CCA=2” 嗯,请问?
-
n=atof(a);:这样不行。您必须使用字符串比较。相关功能可以在string.h或者更好的cstring中找到。一般来说,我建议使用std::string而不是char*或char[]。std::string提供查找或比较(子)字符串的方法。 -
如果a=
ATG,为什么n=atof(a)给你1? -
您能提供一个(不要太长)示例输入文件吗?我在在线编译器中尝试了其中一个答案的代码,但很难读取正确的数据。 (恐怕我的示例输入错误。否则,您的示例中的输入数据读取不正确。)(请使用 edit 链接编辑问题。)
标签: c++