如何在C ++中传递和检索char数组

时间:2018-12-22 08:10:52

标签: c++ arrays char

我正在尝试将字符数组传递给函数。将值设置到字符数组上。然后检索它并使用另一个功能进行打印。但无法获得结果。这是代码

class cSummary{
    private:
       char *cSummaryTable[2];
    public:
       void printSummary();
       void setSummary(char *ptr, int stage);
       char *getSummary();
};
void cSummary::printSummary(){
    char *cPtr = getSummary();
    for(int i = 0; i < 2; i++){
        cout << cPtr[i] << endl;
    }
}
void cSummary::setSummary(char ptr[], int stage){
    switch(stage){
        case 0: 
            cSummaryTable[0] = ptr; 
            break;  
        case 1:
            cSummaryTable[1] = ptr;
            break;
    }
}
char *cSummary::getSummary(){
    return *cSummaryTable;
}
int main(int argc, char const *argv[])
{
    cSummary summary;

    summary.setSummary("first message!",   0);
    summary.setSummary("second message!!", 1);

    summary.printSummary();

    return 0;
}

1 个答案:

答案 0 :(得分:2)

getSummary是问题所在,因为它仅返回第一个字符串。注意getSummarysetSummary之间的不对称性,setSummary有一个stage参数,但是getSummary中没有这样的参数。那本来是什么地方出错的线索。我会这样重新编码

char *cSummary::getSummary(int stage) {
    return cSummaryTable[stage];
}

void cSummary::printSummary() {
    for(int i = 0; i < 2; i++){
        cout << getSummary(i) << endl;
    }
}

我将添加强制性的好建议。您应该学习编程现代C ++,该C ++不使用数组和指针,而是使用更安全,更容易理解的std::stringstd::vector