我在使用2D数组时遇到了麻烦。
我正在使用一组字符串数组。
输入文件的每一行包含两个字符串,每行必须是一个数组。
以下是我的代码和codons.txt中的文字。我的代码有一些额外的cout命令用于调试。当我运行它时,它不会显示第二个字符串。
这是我的代码:
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <fstream>
using namespace std;
int main()
{
const int CODONSLENGTH=64;
string codons[CODONSLENGTH][2];
ifstream infile;
//void readRNACodonTable(string [][2]);
//readRNACodonTable(codons);
infile.open("codons.txt");
if (!infile.is_open()){
cout << "ERROR: Coudn't open input file.";
exit(1);
}
for (int i=0; i < CODONSLENGTH && !infile.eof(); i++) {
cout << "DEGUG: start iteration " << i << endl;
infile >> codons[i][0] >> codons[i][1];
cout << "DEBUG: " << codons[i][0] << " " << codons[i][2] <<
endl;
}
infile.close();
system("PAUSE");
return 0;
}
这是codons.txt:
GCU A GCC A GCA A GCG A CGU R CGC R CGA R CGG R AGA R AGG R AAU N AAC N GAU D GAC D UGU C UGC C CAA Q CAG Q GAA E GAG E GGU G GGC G GGA G GGG G CAU H CAC H AUU I AUC I AUA I UUA L UUG L CUU L CUC L CUA L CUG L AAA K AAG K AUG M UUU F UUC F CCU P CCC P CCA P CCG P UCU S UCC S UCA S UCG S AGU S AGC S ACU T ACC T ACA T ACG T UGG W UAU Y UAC Y GUU V GUC V GUA V GUG V
答案 0 :(得分:3)
你的调试输出中有一个拼写错误,第二个字符串的下标是2
,但它应该是1
(因为索引从0
开始,第二个对象被编入索引1
,就像你在阅读线上所做的那样。)
for (int i=0; i < CODONSLENGTH && !infile.eof(); i++) {
cout << "DEGUG: start iteration " << i << endl;
infile >> codons[i][0] >> codons[i][1];
cout << "DEBUG: " << codons[i][0] << " " << codons[i][1] << endl; // <-- HERE
}
答案 1 :(得分:2)
您正在写信codons[i][1]
,但请阅读codons[i][2]
。