如何在C ++中写入2D数组?

时间:2015-05-06 16:21:48

标签: c++ arrays multidimensional-array

我在使用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 个答案:

答案 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]