C++ 如何将函数的返回结果添加到同样用C+编写的文件中+;?

C++ 如何将函数的返回结果添加到同样用C+编写的文件中+;?,c++,ofstream,C++,Ofstream,你好,我正在写一个程序,它读取文本文件上的数据,执行计算,然后将结果输出到输出文本文件 这是节目的全部内容 主文件 int main() { readFile(inputFile1, inputFile2, inputFile3, lines); robotComplexity(lines); robotVariability(lines); writeFile(outputFile, lines, robotComplexity(lines), robotVariability(lines)

你好,我正在写一个程序,它读取文本文件上的数据,执行计算,然后将结果输出到输出文本文件

这是节目的全部内容

主文件

int main() {

readFile(inputFile1, inputFile2, inputFile3, lines);
robotComplexity(lines);
robotVariability(lines);
writeFile(outputFile, lines, robotComplexity(lines), robotVariability(lines));

getch();
return 0;

}

void Customer() {
std::string customerName;
std::string projectName;
std::string partNumber;;
}

void Parts() {

char partCode;
std::string partName;
int maximum;
int minimum;
int complexity;

}
void Builder() {

std:string name;
int ability;
int variability;

}
实施文件

std::vector<std::string> lines;
std::string inputFile1 = "Builders.txt";
std::string inputFile2 = "Parts.txt";
std::string inputFile3 = "Customers.txt";
std::string outputFile = "output.txt";
std::string input;

void readFile(std::string const& inputFile1, std::string const& inputFile2, std::string const& inputFile3,
              std::vector<std::string>& lines) //function to read Builders, Customers and Parts text file
{
   std::ifstream file1(inputFile1);
   std::ifstream file2(inputFile2);
   std::ifstream file3(inputFile3);
   std::string line;

   while(std::getline(file1, line)) 
   {
      lines.push_back(line);
   }

     while(std::getline(file2, line)) 
   {
      lines.push_back(line);
   }

     while(std::getline(file3, line)) 
   {
      lines.push_back(line);
   }

}


double robotComplexity(std::vector<std::string>& lines) { //takes in the out.txt file

std::string output = lines[0]; //so far only reads the first line of the output file. 
std::string input = output.substr(18,1);

double complexity = 20 * atoi(input.c_str());


   if(complexity > 100) {
      complexity = 100;
   }

cout << "The Robot Complexity is: " << complexity << endl;
return complexity;
}

double robotVariability(std::vector<std::string>& lines) {

std::string output = lines[0]; //so far only reads the first line of the output file. 
std::string input = output.substr(15,2);

double variability;

variability = 5 + atoi(input.c_str());

cout << "The Robot Variability is: " << variability << endl;
return variability;

}

void writeFile(std::string const& outputFile,
               std::vector<std::string> const& lines, double unitComplexity, double unitVariability) //writes to a file output.txt the end calculations. 
{
   std::ofstream file(outputFile);
   for(std::string const& line: lines)
   {
      file << line << std::endl;
   }

   for(double x: unitComplexity) {
      file << x << std::endl;
   }


}
std::矢量线;
std::string inputFile1=“Builders.txt”;
std::string inputFile2=“Parts.txt”;
std::string inputFile3=“Customers.txt”;
std::string outputFile=“output.txt”;
std::字符串输入;
void readFile(std::string const&inputFile1、std::string const&inputFile2、std::string const&inputFile3、,
std::vector&lines)//用于读取生成器、客户和零件文本文件的函数
{
std::ifstream文件1(inputFile1);
std::ifstream文件2(inputFile2);
std::ifstream文件3(inputFile3);
std::字符串行;
while(std::getline(file1,line))
{
线。推回(线);
}
while(std::getline(file2,line))
{
线。推回(线);
}
while(std::getline(file3,line))
{
线。推回(线);
}
}
double robotComplexity(std::vector&lines){//接收out.txt文件
std::string output=行[0];//目前只读取输出文件的第一行。
std::string input=output.substr(18,1);
双重复杂性=20*atoi(input.c_str());
如果(复杂性>100){
复杂度=100;
}

不能改变你的代码,在不使用ranged for循环的情况下输出double,如下所示

void writeFile(std::string const& outputFile,
               std::vector<std::string> const& lines, double unitComplexity, double unitVariability) //writes to a file output.txt the end calculations. 
{
   std::ofstream file(outputFile);
   for(std::string const& line: lines)
   {
      file << line << std::endl;
   }

   file << unitComplexity << std::endl;
   file << unitVariability << std::endl;
}
void writeFile(std::string const&outputFile,
std::vector const&lines,double unitComplexity,double unitVariability)//将结束计算写入文件output.txt。
{
std::流文件(outputFile);
用于(标准::字符串常量和行:行)
{

文件
unitComplexity
作为
double
即单个值传递给函数。基于的范围用于迭代容器的元素(例如向量、列表)。double
不是容器。因为
robotComplexity()
robotVariability()
两者都返回一个
double
,它们的返回值可以传递给
unitComplexity()
-但它们仍然不是容器。试着用一个输出语句替换循环,例如
file Thankyou!我真的很困惑,为什么它不接受循环作为双循环,但这让我明白了它是有效的!另一个次要问题,在我的主要中,我声明了机器人复杂性和机器人可变性两次,一次是在t上继承者拥有,然后再次作为writeFile函数的参数,因此它会打印两次。我应该在第一次调用它们时删除它们吗?
void writeFile(std::string const& outputFile,
               std::vector<std::string> const& lines, double unitComplexity, double unitVariability) //writes to a file output.txt the end calculations. 
{
   std::ofstream file(outputFile);
   for(std::string const& line: lines)
   {
      file << line << std::endl;
   }

   file << unitComplexity << std::endl;
   file << unitVariability << std::endl;
}