[英]How do I write to a 2D array in C++?
我在使用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
调试输出中有一个错字,第二个字符串的下标为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
}
您正在写codons[i][1]
但正在阅读codons[i][2]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.