大家好我在 .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)希望这很清楚
答案 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