[英](C++) - Associating strings with values read in from a file
我试图获取一个值与一个名为invoice1.txt的文件中的字符串相关联的值
invoice1.txt
hammer#10.00
saw#20.00
因此,例如,当我查找“锤子”时,我希望表达式评估为10.00。
我的代码到目前为止
string search;
ifstream inFile;
string line;
double price;
inFile.open("invoice1.txt");
if(!inFile)
{
cout << "Unable to open file" << endl;
return 0;
}
else
{
int pos;
while(inFile.good())
{
getline(inFile,line);
pos=line.find(search);
if(pos!=string::npos)
{
cout<<"The item "<<search<<" costs: "// code to get the price
}
}
}
system("pause");
这是我的目标:
The item hammer costs: 10.00
夏天,我的问题是:
如何将从文件中读入的值相互关联,这样我就可以获得项目的价格,而无需重新解析文件并再次找到它?
这就是std :: map的用途。
你想要做的是将你的问题分解为多个阶段。 这里有一组简单的步骤可以帮助你(有更好的方法,但我想在这里保持简单)。
我已经添加了一些行来解释如何使用std :: map,以防你不熟悉。
使用“#”之前的字符串作为关键字将值添加到地图中...
priceMap [key] =价格; //例如,这可能会评估为:myMap [“hammer”] = 10.00
当你想使用这个值时,简单地给你关键的地图。
std :: cout << priceMap [“hammer”];
你从文件中搜索什么? 你必须搜索字符#并将你的字符串分成两部分。
getline(inFile,line);
pos=line.find('#');
if(pos!=string::npos)
cout<<"The item "<<line.substr(0,pos)<<" costs: " << line.substr(pos+1,line.size()-1) << endl;// code to get the price
如果需要,您可以将项目名称和价格保存在不同的变量中。 如果您想使用字符串执行更多操作,请阅读此内容以获取进一步说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.