C++ C++;:简单fstream未写入输出文件(不确定它是否占用输入文件)

C++ C++;:简单fstream未写入输出文件(不确定它是否占用输入文件),c++,C++,我有一个测试文件(“InputFile.txt”)和一些随机信息一起保存,还有一个空白的输出文件(“output.txt”)。当我调试程序并检查输出文件时,它仍然是空的 “output.out”是否应该是“output.txt”(第25行)?我是否因为在if语句的第22行将“InputFile.txt”作为cstring而遇到问题? 否则这是正确的吗?说到fstream,我有点不知所措,请帮忙 我的代码: #include<fstream> #include<string>

我有一个测试文件(“InputFile.txt”)和一些随机信息一起保存,还有一个空白的输出文件(“output.txt”)。当我调试程序并检查输出文件时,它仍然是空的

“output.out”是否应该是“output.txt”(第25行)?我是否因为在if语句的第22行将“InputFile.txt”作为cstring而遇到问题? 否则这是正确的吗?说到fstream,我有点不知所措,请帮忙

我的代码:

#include<fstream>
#include<string>
#include<iomanip>
#include<iostream>

using namespace std;

int main()
{
    ifstream InputFile;
    ofstream OutputFile;

    string lastName, firstName, fileName,
        line;
    int creditHours, state;
    int tuition;
    bool valid = false;

    do{
    cout << "Input file name (.txt): ";
    cin >> fileName;
    if(fileName == "InputFile.txt")
    {
        InputFile.open("InputFile.txt");
        OutputFile.open("output.out");
        valid = true;
    }
    else{
        cout << "Invalid file name/type." << endl;
    }
    }while(valid == false);




    OutputFile << "Last Name: " << '   ' << "First Name: " << '   '
        << "Credit Hours: " << '   ' << "Tuition Amount: " << endl;
    while(!InputFile.eof()){

    getline(cin, line);
    InputFile >> firstName >> lastName >> creditHours >> state;
    if(state == 1)
    {
        tuition = (creditHours * 350);
    }
    else
    {
        tuition = (creditHours * 570);
    }
    OutputFile << lastName << '   ' << firstName << '   ' 
        << creditHours << '   ' << tuition << endl;
    }



    InputFile.close();
    OutputFile.close();

    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
ifstream输入文件;
流输出文件;
字符串lastName、firstName、fileName、,
线路;
int creditHours,state;
int学费;
bool valid=false;
做{
cout>文件名;
如果(文件名==“InputFile.txt”)
{
open(“InputFile.txt”);
OutputFile.open(“output.out”);
有效=真;
}
否则{
试试这个

ifstream inFile;
ofstream outFile;
并以类似的方式打开文件

inFile.open("InputFile.txt", ios::in);
outFile.open("Output.txt",ios::out);
然后读取输入文件数据并将其写入输出文件

while (!inFile.eof()) {
inFile >> firstName >> lastName >> creditHours >> state;
outFile << firstName << " " << lastName<<"  "<<creditHours<< " " <<state<<"  "<< endl;
}
while(!infle.eof()){
填充>>名字>>名字>>时间>>状态;

文件外您从不检查任何读取是否成功,因此这将是一个很好的开始。将
while(!InputFile.eof())
更改为
while(getline(cin,line)&&InputFile>>firstName>>…>>状态)
。如果希望文件输出为
output.txt
,则必须是
。打开(“output.txt”)
@chris:这一切都应该在while语句中?@user65384,是的,这将是读取数据直到读取失败的通常方式。不过,我不太清楚为什么
getline(cin,line)
在那里。@chris:我没有getline(cin,line)最初在那里,但当我无法让它工作时,我尝试使用它。它应该是while(InputFile>>…>>状态),而不是在while循环本身中的InputFile>>…>>状态吗?