저는 여러 파일 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
같은
'namespace std;를 사용하지 말고'std ::'prefix를 넣어주세요. – syam
대부분 필요한 정보를 모두 포함하지 않았을 가능성이 큽니다. 그냥 main.cpp의 ** part **를'client.cpp'에 복사 했습니까? 'main.cpp' 또는 당신이 포함하지 않은 복사본 중 하나가'using namespace std; '같은 것을 포함하고있는 것으로 보입니다. –
그게 정확히 문제였다. 프로젝트에 포함 된 파일 중 하나가'namespace std를 사용했다. 도와 주셔서 감사합니다! – user2827019