我想用C ++计算文本文件中数据的总数和平均值 这是我的代码和文本文件。 此代码未在运行中显示任何内容
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
using namespace std;
string double2string(double);
double string2double(string);
int main(int argc, char* argv[]){
fstream dfile;
string s1;
string amount;
double damount;
double sum = 0;
dfile.open(argv[1]);
dfile >> amount;
damount = string2double(amount);
while(damount){
sum = sum + damount;
}
string total = double2string(sum);
dfile.clear();
dfile.close();
cout << total;
return 0;
}
将字符串转换为double并将double转换为字符串
的函数string double2string(double d){
ostringstream outstr;
outstr << setprecision(2) << fixed << setw(10) << d;
return outstr.str();
};
double string2double(string s1){
istringstream instr(s1);
double n;
instr >> n;
return n;
}
这是我的文本文件&#34; data.txt&#34;
234
456
789
答案 0 :(得分:0)
您需要使用while循环。你只读了一行,所以你需要确保你一直读到行直到文件的结尾。
此外,您可能希望使用标准库函数:std::stoi
是适用于std::string
的C ++ 11及更高版本,std::atoi
来自<cstdlib>
与std::string.c_str()
一样有效。
#include <iostream>
#include <fstream>
#include <string>
//Compile with C++11; -std=c++11
int main(int argc, char** argv) {
std::fstream file;
//Open the file
file.open(argv[1]);
std::string buffer = "";
int sum = 0;
int n = 0;
//Check for file validity, and keep reading in line by line.
if (file.good()) {
while (file >> buffer) {
n = std::stoi(buffer);
sum += n;
}
std::cout << "Sum: " << sum << std::endl;
} else {
std::cout << "File: " << argv[1] << "is not valid." << std::endl;
}
return 0;
}