리눅스 프로그래밍 중인데요..계속 에러가 나서
리눅스에서 돌릴프로그램을
일단 비주얼c++에서 짜고 있는데요..
계속 에러가 떠서 어떻게 할줄 모르겠네요..
디버깅 모드로 확인해 보니깐 에러 지점은 main함수에 return 0; 하고 나서 바로
에러가 나구요..
디버거가 헤더에 FSTREAM 에
public:
typedef basic_ifstream<_E, _Tr> _Myt;
typedef basic_filebuf<_E, _Tr> _Myfb;
basic_ifstream()
: basic_istream<_E, _Tr>(&_Fb) {}
explicit basic_ifstream(const char *_S,
ios_base::openmode _M = in)
: basic_istream<_E, _Tr>(&_Fb)
{if (_Fb.open(_S, _M | in) == 0)
setstate(failbit); }
virtual ~basic_ifstream()
{}
여기서 젤마지막 {} 이부분에 이상있다고 표시가 되는데..
대체 뭐가 잘못됐는지 모르겠거든요....
좀 도와주세요 ^^;
밑에 제 코드 입니다~~~~~~~~~~~~
#include<iostream>
#include<cstring>
#include<fstream>
#include<stdio.h>
#include<ctype.h>
using namespace std;
class assoc{
private:
char key[200];
int val;
public:
assoc() { strcpy(key,""); val=0; };
~assoc(){};
void set_aso(char *a, int b) { strcpy(key,a); val=b;}
void set_key(char *a) { strcpy(key,a); }
void set_val(int b) { val=b;}
void del_aso() { strcpy(key,""); val=0;}
char *get_key() { return key; }
int get_val() { return val; }
};
class proce{
private:
assoc *aso;
int len;
char *token[3];
public:
proce();
~proce();
ifstream fin;
ofstream fout;
};
proce::proce()
{
len=0;
aso=new assoc[100];
token[3]=new char[255];
}
proce::~proce()
{
delete[] aso;
delete[] token[3];
}
int main ()
{
proce pro;
pro.fin.open("assoc.inp");
pro.fout.open("assoc.out");
char line[100];
memset (line,0,sizeof(line));
pro.fin.close();
pro.fout.close();
return 0;
}
char* token[3] 인데[code:1] token[3&
char* token[3] 인데
이렇게 하셨네요. ^^;
아까...
클래스에서
ifstream fin;
ofstream fout;
이부분만 없얘니깐 정상적으로 돌아가던데..
token지운게 잘못된 건가요?
Re: 아까...
new를 했으니 당연히 delete를 해야지요. 제가 말하는 건 배열 요소가 3개이니
token[3]은 잘못이라는 뜻입니다.
..
파일 입출력에는 아무런 이상이 없다는 겁니까?
파일 입출력에서 에러가 나는데요?
..
char* token[3]
클래스 private에 쓰인 이부분을
컨스트럭터에서 초기화 하는 방법이랑
디스트럭터에서 소멸하는 방법좀 알려 주세요 ^^;;
부탁드립니다.^^
Re: ..
입출력 코드를 볼 수 없으니 왜 에러가 나는지는 모르겠습니다.
Re: ..
알려드린다고 해서 별로 도움이 될 것 같지는 않지만...
복사생성자와 대입연산자도 적절히 정의하세요.
이렇게 하느니 차라리 char* 대신 std::string을 쓰는 게 낫겠습니다.
,,,
죄송하지만 std::string은 어떻게 구현하는지
좀 알려 주시면 안됩니까^^;;;
제가 잘 몰라서요..
token[1]에 10개정도의 문자가 들어갈꺼구요.
token[2], token[3]도 마찬가집니다.
이 token[1],[2],[3]에 데이타를 넣는 방식은
strcpy로 넣게 되구요...
부탁드립니다. ㅠ,.ㅠ;;;
std::string은 구현하는 게 아니고 표준 라이브러리에 있는 것을
std::string은 구현하는 게 아니고 표준 라이브러리에 있는 것을 갖다 쓰는 겁니다.
이러면 생성/소멸/복사가 모두 자동적으로 됩니다.
그보다도 혹시 token의 첨자 범위가 1~3이라고 생각하고 계신지요? -_-;
댓글 달기