繁体   English   中英

(C ++) - 将字符串与从文件读入的值相关联

[英](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,以防你不熟悉。

  1. 逐行读取文件。
  2. 对于读入的每一行,获取“#”字符后面的值。
  3. 使用“#”之前的字符串作为关键字将值添加到地图中...

    priceMap [key] =价格; //例如,这可能会评估为:myMap [“hammer”] = 10.00

  4. 当你想使用这个值时,简单地给你关键的地图。

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM