这是我从中获取数据的文本文件
10
wood 8
gold 7
silver 5
gold 9
wood 1
silver 1
silver 9
wood 3
gold 5
wood 7
我应该找到具有相同名称的商品并将它们的所有数量相加,所以最终结果应该是 wood=19;金=21;银=15。这是我到目前为止所做的
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream read("data.txt");
int n;
read >> n;
char name[10][n]; // 10 symbols are given for items name
int amount[n];
for(int i=0; i<n; i++)
{
read.ignore(80, '\n');
read.get(name[i], 10);
read >> amount[i];
}
for(int i=0; i<n; i++)
{
for(int d=1; d<n; d++)
{
if(name[i]==name[d] && i!=d)
{
}
}
}
return 1;
}
到目前为止的问题是 name[i]==name[d]
甚至没有反应例如 name[i]="wood"
和 name[d]="wood"
原文由 Mahig Yahok 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 C++ 中,我们倾向于使用
std::string
而不是char[]
。第一个重载了相等运算符,因此您的代码应该可以工作。对于后者,您需要strcmp()
来实现您的目标。现在您的代码可能会这样(我使用了 std::vector,但您可以使用字符串数组,但我不推荐它):
顺便说一句,您可以使用
std::pair
使您的代码更具可读性,其中第一个成员是名称,第二个成员是金额。与您的问题无关,当一切正常时,
main()
倾向于return 0;
,而您返回 1。PS:这是一个工作示例:
输出: