barbeirovsk Postado 30 de maio de 2008 Denunciar Compartilhar Postado 30 de maio de 2008 Olá senhores, Este é meu primeiro post nesta comunidade! E já vou pedir um help. O problema que estou enfrentando é para abrir um arquivo .txt pelo C++, programando com o Xcode. O trecho do código está assim: using namespace std; superficie::superficie() { cout ifstream fin("pontos.txt"); if( !fin ) cout else { cout float x, y, z; int i = 0; while( fin >> x >> y >> z ) { E ele me retorna "ERRO ao abrir o arquivo". Desconfio que o problema esteja em alguma configuração do compilador, que talvez esteja buscando o arquivo pontos.txt em outra pasta. Mas não faço idéia de onde arrumar isso. Se alguém puder me ajudar... agradeço. Estou usando um iMac Intel, Xcode3 e o Leopard. Falow, barbeirovsk Citar Link para o comentário Compartilhar em outros sites More sharing options...
Celso Dantas Postado 31 de maio de 2008 Denunciar Compartilhar Postado 31 de maio de 2008 Vou sugerir vc trocar a extensao dele pra *.cpp e ve se resolve. e lembre-se que o XCode funciona bem diferente dos compiladores normais (dev-c, visual studio). Nele vc nao só escreve int main () { return 0; } e ele compila. Tem que dizer qual o alvo de compilação e etc. É melhor vc criar um projeto C++ no xcode (ele ja vai vir com uma pre-configuração) "helloWorld" e trocar pelo seu. Empty project. Nao deve ser facil configurar. Eu pelo menos, nunca consegui. =] Citar Link para o comentário Compartilhar em outros sites More sharing options...
barbeirovsk Postado 5 de junho de 2008 Autor Denunciar Compartilhar Postado 5 de junho de 2008 Bem galera! Eu resolvi o meu problema imediato, alterando meu código. Ao invés de abrir um arquivo eu criei um array. Mas a dúvida persiste... Eu peguei na net uns tutoriais sobre o tema (http://www.softlookup.com/tutorial/c++/ ... #Heading54) e seguindo o tutorial, a coisa funcionou. Mas, quando eu uso o mesmo exemplo do tutorial para abrir um arquivo txt, ou cpp, dá erro! Eu vou xeretar mais um pouco, e quando descobrir, posto aqui a solução. Abras. Citar Link para o comentário Compartilhar em outros sites More sharing options...
barbeirovsk Postado 29 de junho de 2008 Autor Denunciar Compartilhar Postado 29 de junho de 2008 Olá pessoal! Problema resolvido! Isto me foi explicado por Jim Wrenholt, da Nordic Software. O que acontecia era basicamente que o compilador não lê os arquivos de texto do mesmo diretório dos arquivos dos códigos do projeto no Xcode. Então temos duas formas para resolver este problema: 1ª - Colocar o arquivo de texto na pasta padrão, que é bem escondidinha, mas vamos lá. Quando você abre um projeto, na pasta do projeto - só acessível pelo Finder - é criada uma pasta chamada 'build', e dentro dela a pasta 'Release', onde ficam os arquivos executáveis, e os de texto. Assim se vc quiser usar um arquivo de texto no seu projeto, copie tal arquivo na pasta Release. 2ª - A outra forma é, via código, configurar o caminho para um diretório que vc queira usar. Esses scripts são do Jim Wrenholt (thanks dude!). a) especificando um caminho no sistema: #include #include using namespace std; //------------------------------------------------------------------------------------------ void SetKnownPath() { // é necessário declarar um caminho válido! // std::string path("/Users/myname/Projects/MyProject"); chdir(path.c_str()); }; Alterar o caminho relativo do seu bundle atual #include #include using namespace std; void SetWorkingDir() { // this works by finding the current bundle and moving up folders to get to your project folder. // CFBundleRef mainBundle = CFBundleGetMainBundle(); // find the url of the current bundle. CFURLRef pathURL = CFBundleCopyBundleURL(mainBundle); // this is how project folders are set on my system.. your's may differ? // back up relative to bundle "MyProject/build/Debug/" // each ../ moves you up one level CFURLRef destURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault, pathURL, CFSTR("../../../"), true ); // convert from url to system representation of a path. char path[PATH_MAX]; if (!CFURLGetFileSystemRepresentation(destURL, TRUE, (UInt8 *)path, PATH_MAX)) cerr else cout // release the urls. CFRelease(destURL); CFRelease(pathURL); // call the unix system to set the current working directory. chdir(path); }; Então basta usar essas funções no seu arquivo principal! por exemplo: int main() { // SetKnownPath(); SetWorkingDir(); ofstream fout; fout.open( "BOGUS_NAME.txt"); fout fout.close(); cout ifstream fin("BOGUS_NAME.txt"); if(!fin) { cout } else { cout int x, y, z; while(fin >> x >> y >> z){ cout } cout fin.close(); } return 0; } Eu preferi usar a resolução A, mas isso é de cada um... abraços! Paulo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe do debate
Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.