2013-03-22 3 views
4

ifstream을 사용하여 일부 파일을 사용하려고합니다. 모든 것이 잘되는 것처럼 보이지만 파일을 열려고 시도하면 작동하지 않습니다. 이름에 문자열 변수 또는 문자열 리터럴을 입력할지 여부. 액세스하려는 파일은 프로젝트와 동일한 디렉토리에 있으며 내용을 포함하고 있습니다.ifstream이 Xcode에서 작동하지 않습니까?

프로젝트에 오류가 표시되지 않고 컴파일되지만 매번 파일에 액세스 할 수 없다는 메시지가 표시됩니다.

추가 헤더 인 "simpio.h"와 "console.h"는 스탠포드에서 제공하는 라이브러리입니다.

#include <iostream> 
#include "console.h" 
#include "simpio.h" 
#include <fstream> 
#include <string> 
using namespace std; 

int countLines(ifstream & in) 
{ 
    int count = 0; 
    while (true) { 
     string line; 
     getline(in, line); 
     if (in.fail()) break; 
     count++; 
    } 
    return count; 
} 

int main() 
{ 
    ifstream in; 
    while (true) { 
     cout << "Enter name: "; 
     string s = getLine(); 
     in.open(s.c_str()); 
     if (!in.fail()) break; 
     cout << "Couldn't open file, try again!" << endl; 
     in.clear(); 
    } 



    cout << "Num lines = " << countLines(in) << endl; 

    return 0; 
} 

도움이 될 것입니다. 감사!

+0

찾고있는 파일과 같은 디렉토리에서 프로그램을 시작 했습니까? –

+0

그게 무슨 뜻이야? 프로그램과 모든 파일이 같은 프로젝트 폴더에 있습니다. – Jonathan

+2

'ifstream'은 반드시 "Xcode"에서 작동하지 않습니다. 표준 라이브러리, 프로그램 등에서 작동합니다. 클래스가 제공하는 기능은 IDE, 날씨 또는 이웃 고양이의 현재 분위기가 아닌 클래스에만 의존합니다. –

답변

3

당신은 두 가지 옵션이 있습니다

1) 목표 - C를 사용을 ++합니다 (하는 .m 확장자를 제거하고) .mm으로

2 교체) 프로젝트 설정으로 이동하고 그 값을 추가 :

GLIBCXX_DEBUG=1 
GLIBCXXDEBUGPEDANTIC=1 

전 처리기 매크로

이전 Xcode : image http://img541.imageshack.us/img541/2034/screenshot20100414at101.png! 최신 Xcode :

image!

예제 코드 :

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main(int argc, const char * argv[]) 
{ 
    ofstream myfile; 
    myfile.open ("/Developer/afile.txt"); 
     if(!myfile) 
     { 
     std::cout << "ERROR" std::endl; 
     }  
    myfile << "Writing this to a file.\n"; 
    myfile.close(); 
    return 0; 
} 
+0

나는 그 지역으로 갔고 그 밭은 이미 비어있었습니다. 그래서 나는 삭제할 것이조차 없었습니다. 어떤 아이디어? – Jonathan

+0

네, 잘못 입력 했어. 미안해. 여러개의 값이나 뭔가 말한 것을 추가해야 해. – Jona

+0

내가 제공 한 텍스트를 편집/삽입하기 위해 매크로 필드에 접근 할 수 없다. 그것이 작동하기 위해서 내가해야 할 특별한 것이 있습니까? – Jonathan

2

당신은 다른 설정을 깰 수 있음을 두려워, 엑스 코드에서 아무것도 혼란하지 않으려면 다음을 수행

을 즉시 구축 및 실행으로 귀하의 콘솔 프로그램이나 응용 프로그램은 일반적으로 프로젝트가 배치 된 왼쪽에있는 파일 목록으로 이동하여 "프로젝트"디렉토리를 찾아 마우스 오른쪽 버튼으로 클릭하거나 옵션을 클릭하고 "Finder에서 표시"를 선택하십시오. 여기서 Xcode는 특정 프로젝트를 실행할 때마다 빌드를 덤프합니다. 모든 작업 공간에는 자체 빌드 폴더가 있습니다. 거기서 선택한 파일을 찾으십시오. 거기에 파일을 추가하기 만하면 파일을 드래그하면 콘솔이나 app ​​프로그램에서 호출 할 수 있습니다. myfile.open ("file.txt");

프로젝트의 작업 디렉토리를 변경하고/Developer/Gibberish/Build/Debug/other보다 훨씬 쉽게 액세스 할 수있는 폴더를 사용하십시오.

이렇게하면 코드를 Win32 나 다른 시스템에 쉽게 포팅 할 수 있습니다.

관련 문제