[완료]ifstream은 왜 string 인자는 받지 못하나요?
글쓴이: hyde1004 / 작성시간: 월, 2009/12/28 - 10:41오전
안녕하세요.
C++ 에서 ifstream은 string이 아닌 char*형을 인자로 받을 수 있는것으로 알고 있습니다.
ifstream 자체가 C++에서 생긴 클래스인데,
왜 굳이 C의 char*를 받는것인가요?
string을 인자로 받지 않는 이유가 있는것인지요?
아래 코드 참조
int main() { using namespace std; char filename[SIZE] = "filename.txt"; string filename2 = "filename2.txt"; ifstream inFile; inFile.open(filename); // OK inFile.open(filename2); // Error 이하 생략
Forums:
기술적인 문제라기보다 디자인에 관련된 문제로 생각됩니다.
string을 인자로 받게 되면 fstream이 string에 의존하게 됩니다.
C++은 C에서 char*문자열을 그대로 물려받아서 사용하고 있고 다른 언어와 다르게 string이 내장 타입이 아니라 별도의 라이브러리로 존재합니다.
라이브러리간의 의존성은 최대한 줄이는 게 좋다는 관점에 봤을 때 fstream.open이 string 대신 char*로 받아서 불필요한 의존성을 끊어 버리는게 옳은 방법일 겁니다.
게다가 string::c_str()으로 언제든 char* 문자열을 얻어 낼 수 있기 때문에 사용하는데 불편한 점이 없을거라 판단했을 것 같습니다.
string이 내장 타입이라면 이야기가 달라지겠지요.
infile.open(filename2.c_str())으로 호출해버리세요.
:)
네,, 그렇군요..
네,, 그렇군요.. 감사합니다..
댓글 달기