2013-09-28 1 views
1

저는 여러 파일 C++ 프로그램을 처음 접했고 적절하게 설명 할 수 있는지 확신 할 수없는 문제가 있습니다. 여기에 문제가 있습니다. 내 .cpp 파일 중 하나는 #include 목록에 포함 된 모든 기능을 사용하지 못하게합니다.#include에 포함 된 파일을 포함하지 않는 Visual Studio 2010 C++

내가 한 일은 다음과 같습니다. 먼저 main.cpp에 코드를 작성했습니다. 모든 것이 잘 작동하고, 컴파일되고, 정확히 말하고 있습니다. 이제 그 코드를 client.cpp로 옮기려고합니다. main.cpp에서 잘 작동하는 문자열, 스트림 또는 다른 것을 선언 할 수 없습니다.

#include <stdio.h> 
#include <tchar.h> 
#include <iostream> 
#include <fstream> 
#include <direct.h> 
#include <string> 

#define SAVE_FILE_LOC "C:\\Saves\\" 
int main()   
{   

    ofstream saveFile;  
    string loc;  
    string userName;  
    printf("Please enter your user name:\n");  

    getline(cin, userName);  

    loc = SAVE_FILE_LOC;  
    loc = loc + userName;  
    if (_mkdir(loc.c_str()) == -1){  
     printf("Location Already Exists!\n"); 
    }  
    else{  
     loc = loc + "\\Profile.txt"; 
     saveFile.open(loc.c_str()); 
     saveFile << "Test"; 
     saveFile.close(); 
    }  
    return 0;  
}   

자, 내가 (VS에서) 내 "소스 파일"폴더를 마우스 오른쪽 버튼으로 클릭 있었다했던 유일한 것은 새로운 .cpp 파일을 추가, 이름을 : 여기

은 잘 작동 코드의 client.cpp, 위의 정확한 코드를 복사하여 파일에 붙여 넣었습니다. 이제 작동하지 않습니다.

#include <stdio.h>   
#include <tchar.h>   
#include <iostream>   
#include <fstream>   
#include <direct.h>   
#include <string>   

#define SAVE_FILE_LOC "C:\\Saves\\"   

int login(void);   

int login(void)   
{   
    ofstream saveFile;  
    string loc;  
    string userName;  
    printf("Please enter your user name:\n");  

    getline(cin, userName);  

    loc = SAVE_FILE_LOC;  
    loc = loc + userName;  
    if (_mkdir(loc.c_str()) == -1){  
     printf("Location Already Exists!\n"); 
    }  
    else{  
     loc = loc + "\\Profile.txt"; 
     saveFile.open(loc.c_str()); 
     saveFile << "Test"; 
     saveFile.close(); 
    }  
    return 0;  
}   

내가 30 위의 코드에서 오류를 컴파일 얻을, 여기에 예입니다 : 컴파일러가 지금 갑자기 문자열 또는 스트림 또는 아무것도를 만들 수 없습니다 내게 말하고있다

 
Error 1 error C2065: 'ofstream' : undeclared identifier ***\Client.cpp 14 1 ConsoleApplication4 

Error 2 error C2146: syntax error : missing ';' before identifier 'saveFile' ***\Client.cpp 14 1 ConsoleApplication4 

. 코드의 #include 부분에 오류가 없으므로 라이브러리를 찾을 수 없다는 것을 알려주지 않습니다.

이 경우에도 내가 무엇을 필요로하는지 잘 모르겠지만, main이라는 이름이 아닌 .cpp 파일을 만들 때 내 포함이 작동하지 않는 이유는 무엇입니까?

편집 : 문제가 발견되었습니다. 주 using namespace std을 사용했으며 client.cpp에 해당 줄이 없습니다. 표준 라이브러리에서 string, ofstream 같은

+2

'namespace std;를 사용하지 말고'std ::'prefix를 넣어주세요. – syam

+0

대부분 필요한 정보를 모두 포함하지 않았을 가능성이 큽니다. 그냥 main.cpp의 ** part **를'client.cpp'에 복사 했습니까? 'main.cpp' 또는 당신이 포함하지 않은 복사본 중 하나가'using namespace std; '같은 것을 포함하고있는 것으로 보입니다. –

+0

그게 정확히 문제였다. 프로젝트에 포함 된 파일 중 하나가'namespace std를 사용했다. 도와 주셔서 감사합니다! – user2827019

답변

0

이름은 네임 스페이스 std::에 선행 될 필요가, 당신이 게시하는 것은 중 하나는 아래 using namespace std;이 (문자열, ofstream,의 getline을 포함하거나 클래스/당신이 사용하려고 기능 이전 std:: 없음)

관련 문제