在 C++ 中将数据值添加到数组的末尾

Posted

技术标签:

【中文标题】在 C++ 中将数据值添加到数组的末尾【英文标题】:Add a Data value to the end of an array in c++ 【发布时间】:2020-06-11 03:26:05 【问题描述】:

我需要一些帮助。 我正在浏览一些工资单数据。 我运行了一个读取 .txt 文件的函数,然后将其存储在数组中。我现在正在尝试编写一个函数,允许您添加到这些数组中(它们是 32 个数组,但文件中只有 20 个元素)所以它需要遍历数组,确保它们不会超出范围,然后将其他数据类型添加到数组中。这就是我的样子。没有错误,但是当我运行它时,它什么也不做:

string AddPayrollData(array<double, kMaxSize> &hours, 
array<char, kMaxSize> &pay_type,
array<double, kMaxSize> &pay_rate, 
array<string, kMaxSize> &names,
double hours_worked, char pay_t, double pay_r, string full_name,
int &size )


    int i = 0;
    while (size < kMaxSize && i < size)
    
        if (hours[i] > 168)
        
            cout << "Hours is out of range, set to 0" << endl;
            hours[i] = 0;
        
        if (pay_type[i] != 'h' || 's')
        
            cout << "Incorrect pay type, set to s " << endl;
            pay_type[i] = 's';
        
        if (pay_rate[i] < 7.25)
        
            cout << "Pay is less than minimum wage, set to 7.25 " << endl;
            pay_rate[i] = 7.25;
        
        if (names[i].find(","))
        
        else
        
            cout << "Name Is not in last, first format" << endl;
            names[size] = "unknown";
        
        i++; 
    
        if(size >= kMaxSize)
        
            cout << "Arrays are full, no payroll data added" << endl;
        
        else
        
            hours_worked = hours[size];
            pay_t = pay_type[size];
            pay_r = pay_rate[size];
            full_name = names[size];
            size++;
        
    return "";

感谢您的帮助!

【问题讨论】:

您没有显示AddPayrollData() 的调用方式。请提供minimal reproducible example。附带说明一下,if (pay_type[i] != 'h' || 's')if (names[i].find(",")) 语句并没有按照您的想法执行。 我想知道,为什么不使用 std::vector message1 = AddPayrollData(hours, pay_type, pay_rate, names, 169, 's', 17.25, "Kerr, Shawn", size); @aaronleejackson if (pay_type[i] != 'h' || 's') 应该是 if (pay_type[i] != 'h' &amp;&amp; pay_type[i] != 's')if (names[i].find(",")) 应该是 if (names[i].find(",") != string::npos) @aaronleejackson 必须重复之前所说的,你为什么不使用vector 【参考方案1】:

这里似乎有一些问题。有些已经在上面的 cmets 中处理过了。所以我会提到其他的。

最重要的问题是函数的目的被混淆了。它既验证现有数据,又添加(但不验证)新数据。这两件事都没有错,但它们应该是单独的功能。或者也许这个函数应该添加和验证新数据,但不理会现有数据。

在验证部分,已经提到了一些错误,加上names[size] = "unknown";应该是names[i] = "unknown";

在添加部分的问题是分配执行的方式错误

hours_worked = hours[size];
pay_t = pay_type[size];
pay_r = pay_rate[size];
full_name = names[size];

当然应该

hours[size] = hours_worked;
pay_type[size] = pay_t;
pay_rate[size] = pay_r;
names[size] = full_name;

最后由于某种奇怪的原因,函数返回了一个字符串。只需将其设为 void 函数即可。

【讨论】:

太棒了。这是有道理的。谢谢!我只是想找出添加新数据并验证它的最佳方法?这就是这个功能的目的。我写的另一个函数已经验证了旧数据。听起来很愚蠢,我只是想找到将它添加到数组中的最佳方法。谢谢。 @aaronleejackson 如果您只想验证新数据,则将循环放在函数的第一部分并检查变量hours_workedpay_tpay_rfull_name

以上是关于在 C++ 中将数据值添加到数组的末尾的主要内容,如果未能解决你的问题,请参考以下文章

在 c++ 数组末尾添加一个值

在 OBIEE 中将总计添加到数据透视表行的末尾

如何在python中将二维数组添加到数据库中

cmake如何在C ++中将编译器标志附加到末尾

在 C++ 中将整数添加到数组中?

在VBScript中将项目添加到数组