Ich habe eine Zeichenfolge wie ATGCCA .... Diese Zeichenfolge wird in ein Array von Zeichen als [ATG CCA ...] umgewandelt. Ich weiß bereits, dass ATG = 1 und CCA = 2, und ich habe diese als doppelt definiert. Wie kann ich die transformierte Matrix als Double speichern? Hier ist mein Programm jetzt, aber es funktioniert nicht:Ist es möglich, ein Zeichen sowohl als Doppel als auch als Zeichen zu verwenden?
#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;
}
}
Ich erwarte, dass dies als Ausgabe sehen:
ATG 1
CCA 2
Aber was ich sehe, ist:
ATG 0
CCA 0
Thank Sie für Ihre Hilfe!
_ "Ich weiß schon, dass ATG = 1 und CCA = 2 "_ Huh, was bitte? –
'n = atof (a);': Es funktioniert nicht so. Sie müssen den Zeichenfolgenvergleich verwenden. Die relevanten Funktionen finden Sie in 'string.h' oder besser [' cstring'] (http://en.cppreference.com/w/cpp/header/cstring). Im Allgemeinen würde ich vorschlagen, ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) anstelle von' char * 'oder' char [] 'zu verwenden. 'std :: string' bietet Methoden zum Suchen oder Vergleichen von (Sub-) Strings. – Scheff
Warum sollte 'n = atof (a)' Ihnen 1 geben, wenn a = 'ATG'? – Walter