gpt4 book ai didi

c++ - Quick Q - 无法将函数的输出写入文件

转载 作者:行者123 更新时间:2023-11-28 06:32:28 25 4
gpt4 key购买 nike

Code :

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

void printVector (const vector<string>& theVect, vector<bool>& bArray, int nItems){
for (int i = 0; i < nItems; ++i)
if (bArray[i] == true)
cout << theVect[i] << " ";
outFile << theVect[i];
cout << "\n";
outFile << "\n";
}

void nCombination(const vector<string> &Vect,int n, int r){

vector<bool> myBits(n, false); // everything is false now
int count = 1;
for (size_t i = n-1; i >= 0 && count <= r; --i, ++count){
myBits[i] = true;
}
do // start combination generator
{
printVector(Vect, myBits, n );
} while (next_permutation(myBits.begin(), myBits.end()));; // change the bit pattern
}

void nPermutation(vector<string> o, int r){
do {
for(int count = 0; count < r; count++){
cout << o[count] << " " ;
outFile << o[count] << " ";
}
cout<< endl;
outFile << endl;
}
while (next_permutation(o.begin(), o.end()));
}

int main(int argc, char** argv) {

int numofOps;
char Op;
int n;
int r;
string line;

ifstream myFile("infile.dat");
myFile >> numofOps;
myFile.ignore(1,'\n');

ofstream outFile;
outFile.open ("example.txt");

for(int q = 0; q < numofOps; ++q){
myFile.get(Op);
myFile >> n;
myFile>> r;

vector<string> original(n);
for(int i = 0;i <= n - 1; i++){
myFile.ignore(1,'\n');
myFile >> original[i];}

myFile.ignore(1,'\n');

sort(original.begin(), original.end());

cout<< '\n'<< endl;


if(Op == 'P'){
nPermutation(original, r);
}
else{
if(Op == 'C')
nCombination(original,n,r);
else
cout << "Incorrect Input" << endl;
}
original.clear();
}
outFile.close();
return 0;
}

我的代码可以工作,但是当我添加 outFile 以将所有内容写入名为 example 的文件时,它不起作用。如何打印出函数的结果??

例子会很好!!

最佳答案

想到一个直接的问题:

if (bArray[i] == true)
cout << theVect[i] << " ";
outFile << theVect[i];

Python 是我所知道的唯一一种使用缩进来控制语句 block 的语言。在基于 C 的语言中,您应该使用大括号:

if (bArray[i] == true) {
cout << theVect[i] << " ";
outFile << theVect[i];
}

最重要的是,您提供的代码甚至不应该编译。您在 main() 中将 outFile 创建为 local 参数,然后尝试在无法访问的其他函数中使用它。

您应该通过将其移出 main() 使其成为“全局”,以便每个函数都可以看到它(不明智,但可能是这里最快的解决方案)或将其作为参数传递给每个需要使用它的函数。

对于前者,您可以使用:

using namespace std;
ofstream outFile; // taken from main().

对于后者,这是在每次调用 printVector()nCombination()nPermutation() 时添加它的问题,并修改这些功能,以便他们接受它,例如:

void nPermutation (
vector<string> o,
int r,
ofstream os
) {
os << "blah blah blah\n";
}
:
nPermutation (original, r, outFile);

关于c++ - Quick Q - 无法将函数的输出写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27308011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com