更新:我知道它必须是简单而愚蠢的东西。在尝试了这么多事情之后,我终于意识到我在函数调用中无效。这一直是最大的问题。感谢所有帮助我实现愚蠢的人。
我对此非常陌生,并且看到我从书中学到的风格与我在本网站上看到的风格大不相同。这不是家庭作业,而是来自D.S Malik 5th的练习。
我似乎无法正确地将我的代码粘贴到此网站上,因此我只想抓住几个位置,以便了解我所处的位置。我正在修改我之前编写的程序,以便在main中打开一个文件,并从我的函数中读取它。我该怎么做...就如何从函数中读取main中打开的内容?这是阻止我改变其余部分的部分。非常感谢您的帮助。
更新:由于某种原因,我仍然无法复制和粘贴整个程序,但这里有更多代码片段。我在函数中尝试了istream和ifstream。我也尝试使用inData和inDat。以下是我为自己粘贴的内容所犯的错误: 错误C2182:' getNumber' :非法使用类型' void' 错误C2078:初始化程序太多 错误C2182:' getNumber' :非法使用类型' void' 错误C2078:初始化程序太多
目前主要阅读:
inData >> number;
我需要更改的是我的函数中的旧版本:
void getNumber(int& num)
{cin >> num;//!!!!!!!!!Can't use inData input variable here}
void initialize(int& zeroCount, int& oddCount, int& evenCount);
void getNumber(std::istream& inDat, int& num);
void classifyNumber(int num, int& zeroCount, int& oddCount, int& evenCount);
void printResults(int zeroCount, int oddCount, int evenCount);
int main()
{
int counter;
int number;
int zeros;
int odds;
int evens;
int randNum;
int i;
int r;
string numList;
ifstream inData;
ofstream outData;
inData.open("random.txt");
outData.open("results.txt");
initialize(zeros, odds, evens);
counter = 1;
void getNumber(inData, number);
while (!inData.eof())
{
if (counter == 10)
{
cout << endl;
outData << endl;
}
cout << setw(4) << number;
outData << setw(4) << number;
classifyNumber(number, zeros, odds, evens);
counter++;
void getNumber(inData, number);
if (counter > 20)
{
cout << "Error in while loop \"Processing Data\"" << endl;
break;
}
} // end while
cout << endl;
printResults(zeros, odds, evens);
cin.sync();
cin.ignore();
return 0;
}
void initialize(int& zeroCount, int& oddCount, int& evenCount)
{
zeroCount = 0;
oddCount = 0;
evenCount = 0;
}
void getNumber(std::istream& inDat, int& num)
{
inDat >> num;
}
答案 0 :(得分:1)
更改getNumber
以std::istream&
作为参数。
void getNumber(std::istream& inData, int& num);
并将其实施更改为:
void getNumber(std::istream& inData, int& num)
{
inData >> num;
}
将被调用的地方更改为:
getNumber(inData, num);