在 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::vectorif (pay_type[i] != 'h' || 's')
应该是 if (pay_type[i] != 'h' && 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_worked
、pay_t
、pay_r
而full_name
。以上是关于在 C++ 中将数据值添加到数组的末尾的主要内容,如果未能解决你的问题,请参考以下文章