所以我正在学习如何输出到文件,但插入运算符“<<”没有得到承认。
所以每次我在下面的代码中使用“OutFile<<”时,visual studio会标记“<<<”无效。
我想也许这是我的包含语句的问题,但我仔细检查过,对我来说似乎并非如此。
完整错误
"1>z:\cst 113 - programming\purdyjex4\purdyjex4.cpp(111): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::basic_string<_Elem,_Traits,_Alloc> &)': could not deduce template argument for 'std::basic_ostream<_Elem,_Traits> &' from 'std::ifstream'
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\string(167): note: see declaration of 'std::operator <<'"
我的代码:
//Include - to use input & output on the screen
#include <iostream>
//Include - For file output and input
#include <fstream>
//Include - to use input and Output Manipulators
#include <iomanip>
//Include - to use string variables
#include <string>
//namespace using statement must be included to use the standard header files
using namespace std;
//Constant for programmer's name
const string MY_NAME = "Justin T Purdy";
//Constant for Course & Exercise Number
const string COURSE = "CST 113 - Exercise 4";
//To make outputting headers easier, store character and width for deviders
const int SCREEN_WIDTH = 79;
const char SYMBOL = '*';
//Cost Ratios
const double DAY_COST = 0.1;
const double NIGHT_COST = 0.25;
//Name of files user can open
const string FILE_NAMES[2] = { "Ex4-1.txt","Ex4-2.txt" };
int main(void)
{
//Declare variables; Step 1
ifstream inFile;
ifstream outFile;
//Create variables to be used
//I'm using arrays for some variables
string customerFirstName[3];
string customerLastName[3];
string customerFullName[3];
int fileNumber;
int dayMinutes[3];
int nightMinutes[3];
double totalCosts[3] = { 0 };
double grandTotal = 0;
//Output deviders
cout << setfill(SYMBOL) << setw(SCREEN_WIDTH) << SYMBOL << setfill(' ')
<< endl;
//Get file number from user
cout << "Select from these two file names: " << endl
<< " 1: Ex4-1.txt" << endl << " 2: Ex4-2.txt" << endl;
cout << setfill(SYMBOL) << setw(SCREEN_WIDTH) << SYMBOL << setfill(' ')
<< endl;
cout << "Enter the number of the input file: ";
cin >> fileNumber;
//Check if invalid number, terminate program if number invalid
if (fileNumber > 2)
{
cout << endl << "You have entered a invalid fileNumber and the program terminated.";
return 0;
}
//Open file the user specified
inFile.open(FILE_NAMES[fileNumber]);
outFile.open("Ex4-Out.txt");
//Get data from opened file, put it into variables
inFile >> customerFirstName[1] >> customerLastName[1] >> dayMinutes[1] >> nightMinutes[1]
>> customerFirstName[2] >> customerLastName[2] >> dayMinutes[2] >> nightMinutes[2]
>> customerFirstName[3] >> customerLastName[3] >> dayMinutes[3] >> nightMinutes[3];
//Calculation total costs using data from file
totalCosts[1] = (dayMinutes[1] * DAY_COST) + (nightMinutes[1] * NIGHT_COST);
totalCosts[2] = (dayMinutes[2] * DAY_COST) + (nightMinutes[2] * NIGHT_COST);
totalCosts[3] = (dayMinutes[3] * DAY_COST) + (nightMinutes[3] * NIGHT_COST);
grandTotal = totalCosts[1] + totalCosts[2] + totalCosts[3];
//Output header into output file
outFile << setfill(SYMBOL) << setw(SCREEN_WIDTH) << SYMBOL << setfill(' ')
<< endl << MY_NAME << endl << COURSE << "CELL PHONE BILL"
<< setfill(SYMBOL) << setw(SCREEN_WIDTH) << SYMBOL << setfill(' ');
//Output name of columns to output file
outFile << right << setw(10) << "Phone" << setw(20) << "Name"
<< setw(15) << "Day" << setw(15) << "Night" << setw(15)
<< "Total" << endl << setw(45) << "Minutes" << setw(15)
<< "Minutes" << setw(15) << "Cost" << setfill(SYMBOL) <<
setw(SCREEN_WIDTH) << SYMBOL << setfill(' ');
//Output first row of data
outFile << right << setw(10) << "1" << setw(20) << customerFirstName[1]
<< setw(15) << dayMinutes[1] << setw(15) << nightMinutes[1] << setw(15)
<< totalCosts[1] << endl;
//Output second row of data
outFile << right << setw(10) << "2" << setw(20) << customerFirstName[2]
<< setw(15) << dayMinutes[2] << setw(15) << nightMinutes[2] << setw(15)
<< totalCosts[2] << endl;
//Output third row of data
outFile << right << setw(10) << "3" << setw(20) << customerFirstName[3]
<< setw(15) << dayMinutes[3] << setw(15) << nightMinutes[3] << setw(15)
<< totalCosts[3] << endl;
//Output grand total
outFile << setfill(SYMBOL) << setw(SCREEN_WIDTH) << SYMBOL << setfill(' ')
<< left << "Total family cost:" << right << grandTotal;
//Close file
inFile.close();
outFile.close();
return 0;
}
答案 0 :(得分:0)
此ifstream outFile;
应为ofstream outFile;
。否则你将写入一个输入文件而且没有定义。