【问题标题】:how to pass and retrieve char array in c++如何在 C++ 中传递和检索 char 数组
【发布时间】:2018-12-22 08:10:51
【问题描述】:

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

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;
}

【问题讨论】:

  • 首先,这看起来更像 C 而不是 C++。在 C++ 中,您可以只使用字符串向量。其次,将字符串文字传递给函数应该是const char*。第三,您的错误是在getSummary() 中返回*cSummaryTable,而您应该只返回cSummaryTable

标签: c++ arrays char


【解决方案1】:

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++,它不使用数组和指针,而是使用更安全、更易于理解的 std::stringstd::vector

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2021-12-02
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多