c ++从字符串中提取数字并对其求和

时间:2015-01-22 07:01:06

标签: c++

大家好我在 .txt 中有这组数据,其中包含 ":" as delimeter 的字符串中的正数和负数。如何提取负数并将其总结显示。我尝试使用substr但位置不固定。

文字文件:

tom12:Phone Bill:-45.90:12JAN14
tom12:Utility Bill:-133.50:17JAN15
tom12:Housing Bill:-200.78:01JAN15
tom12:Salary:2700.00:02FEB15
tom12:Miscellaneous:-30.52:20JAN15
tom12:Child Needs:-80.95:15JAN15

对不起,也许我的qn不清楚。我想读取每一行并获得字符串中的双精度(-45.00,-133.50,-200.70,2700.00,-30.522,-80.95)并将所有负数汇总到(-491.65)然后使用当时的工资减去关闭到余额(2700 - 491.65 = 2208.35)希望这很清楚

1 个答案:

答案 0 :(得分:1)

这有望帮助你。

std::ifstream file("your_file");
std::string   line;
int totalNegative = 0;
int totalPositive = 0;
while(std::getline(file, line))
{
   std::stringstream   linestream(line);
   std::string         data1;
   std::string         data2;
   int                 val3;
   std::string         data4;//If you want fourth string you can use.

   getline(linestream, data1, ':');//Getting tom12
   getline(linestream, data2, ':');//Getting Phone Bill
   // Read the integers using the operator >>
   linestream >>val3;

   if(val3 > 0)
      totalPositive += val3;
   else
      totalNegative += val3;
}
cout <<Difference is " << (totalPositive-totalNegative);

std :: ifstream Input stream class to operate on files

此类的对象将filebuf对象维护为其内部流缓冲区,执行 input/output operations on the file

相关联

std :: stringstream Stream class to operate on strings

此课程的对象使用 string buffer that contains a sequence of characters 。您可以使用此std :: stringstream

拆分带分隔符的字符串