私はATGCCAのような文字列を持っています。 この文字列は[ATG CCA ...]のようにcharの配列に変換されます。 私はすでにATG = 1とCCA = 2を知っていますが、これを二重と定義しています。変換された行列を二重に保存するにはどうすればよいですか? ここに私のプログラムは今ですが、それは動作しません:文字をdoubleとcharの両方として使用できますか?
ATG 1
CCA 2
しかし、私が見ることは次のとおりです:
ATG 0
CCA 0
感謝
#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;
}
}
私は出力としてこれを見ることを期待しますあなたの助けをあなたに!
を参照してください、/マップのペアのキーの
array
を使用する必要がある場合があります= 2 "_うわー、どうか? –'n = atof(a);':このようには動作しません。文字列比較を使用する必要があります。関連する関数は、 'string.h'またはより良い[' cstring'](http://en.cppreference.com/w/cpp/header/cstring)にあります。一般的には、 'char *'や 'char []'の代わりに['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)を使うことをお勧めします。 'std :: string'は、(サブ)文字列を見つけたり比較したりするメソッドを提供します。 – Scheff
なぜ 'n = atof(a)'がa = 'ATG'ならあなたに1を与えるべきですか? – Walter