뭐가 문제인지 내 머리로는 도저히 모르겠슴다.
뭐가 문제일까요? 능력자분들 답변좀 해주시면 감사하겠습니다.
아래는 문제의 프로그램 되것슴다.
그런데.. 이렇게 코드 직접 만들지 말고 뭔가 간단한 방법 없을까요? 스트링에서
단어 하나씩 읽어 들이는 기본 펑션 같은것도 있을법도 한데.. -,.-
.h 헤더파일.
#include <fstream>
using namespace std;
#ifndef _TEXT_FILE_READER_WRAPPER_
#define _TEXT_FILE_READER_WRAPPER_
const int nMaxWordLength = 32;
class TextFileReaderWrapper
{
private:
ifstream o-nputFileStream;
public:
TextFileReaderWrapper( char * pcFilename );
bool retrieveNextWord( char * pcNextWord );
// void retrieveAllWords( char * pcLastWord );
};
#endif
**********************************************************************
.cpp 파일.
#include <iostream>
#include <cstdlib>
#include "Text File Reader Wrapper.h"
using namespace std;
TextFileReaderWrapper::TextFileReaderWrapper( char * pcFilename )
{
o-nputFileStream.open(pcFilename);
if (!o-nputFileStream)
{
cout << "Error opening file: " << pcFilename << endl;
exit(1);
}
}
/
bool TextFileReaderWrapper::retrieveNextWord( char * pcNextWord )
{
int nPos = 0;
char ch;
bool bWordCompleted = false;
// and the file hasn't reached an end yet...
while ( !bWordCompleted && (ch = this->o-nputFileStream.get()) != EOF )
{
switch (ch)
{
case '\n': case '\r': case '\t': case ' ': // various whitespaces
if (nPos==0) continue;
pcNextWord[nPos] = '\0';
bWordCompleted = true;
// cout << "The next extracted word is: " << pcNextWord << endl;
break;
default:
pcNextWord[nPos] = ch;
nPos++;
break;
}
}
if (!bWordCompleted)
{
pcNextWord[nPos] = '\0';
cout << "The last extracted word is: " << pcNextWord << endl;
//since EOF has been reached, this is the last word in the file
return true;
}
else
return false;
//return bWordCompleted;
}