简体   繁体   中英

C++ Error: Undefined Symbol

The point of my code is to be able to enter a file with blank-n somewhere within the text. It is suppose to change blank-N to a user prompted code such as (blank-N) =noun and asks the user to enter a noun but for some reason I am getting that error So here is my code:

    //Author:
//
//
//
//
//

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using std::string;
using namespace std;

string getWord(ifstream &Infile, char &ch);
void getFilename(ifstream &Infile);
void getOutfile(ofstream &Outfile);
void putWord(ostream &Outfile,string word, char space);
string replacement(string word,std::string);
void printprompt(int i);
int main()
{
  ifstream filename;
  ofstream outfile;
  string file;
  string word;
  char ch;
  getFilename(filename);
  getOutfile(outfile);
  while(!filename.eof())
    {
      file =getWord(filename,ch);

      putWord(outfile,file,ch);
    }
  filename.close();
  outfile.close();
  return 0;
}

string getWord(ifstream &Infile, char &ch)
{
  string wrd = "";

  Infile.get(ch);
  while(ch !=' '&& ch != '\n' && !Infile.eof())
    {
      wrd.append(1,ch);
      Infile.get(ch);
    }
  return wrd;
}

void getFilename(ifstream &Infile)
{
  string filename;
  cout<<"File for input: ";
  cin >>filename;

  Infile.open(filename.c_str());
  if (Infile.fail())
    {
      cout << "Cannot open"<<filename<<endl;
      exit(0);
    }
}

void getOutfile(ofstream &Outfile)
{
  string filename;
  cout<<"file for output: ";
  cin>>filename;
  Outfile.open(filename.c_str());
  if(Outfile.fail())
    {
      cout<< "Cannot open"<<Outfile<<endl;
      exit(0);
    }
}

void putWord(ofstream &Outfile,string word, char c)
{

  Outfile << word;
  if (c =='\n')
    Outfile<<endl;
  else
    Outfile<<" ";
}
string replacement(string word)
{
  string key[5]={"blank-N", "blank-A","blank-V","blank-P","blank-D"};
  for(int i =0; i<5;i++)
    {
      if(word.compare(key[i]))
        {
          printprompt(i);
          cin>>word;
        }

      return word;
    }
}
void printprompt(int i)
{
  switch(i)
    {
    case 0:
      cout<<"Please enter a noun";
      break;
    case 1:
      cout<<"Please enter an adjective";
      break;
    case 2:
      cout<<"Please enter a verb";
      break;
    case 3:
      cout<<"Please enter a place";
      break;
  default:;

    }
}

and I seem to be getting this error:

    Undefined                       first referenced
 symbol                             in file
putWord(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, char)/var/tmp//ccdj0m4f.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status

I do not know how to prevent this error from happening.

The compiler is telling you that the definition doesn't match the implementation. In this case the parameter types don't match.

Your definition:

void putWord(ostream &Outfile,string word, char space);

Your implementation:

void putWord(ofstream &Outfile,string word, char c) { /* etc */ }

Since ostream and ofstream are different types, that's not going to compile.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM