2016-03-28 24 views
-2

yayın akışında rastgele bir dosyada (mac-xcode'ta) okumaya ve belgede k harfinin örneklerini belirlemeye çalışıyorum. Ardından, sayıyı bir çıkış dosyası olarak yazdırın. Benim sorunum, outfile yazılmadığı ve nums_k 0 olarak geri dönüyor olmasıdır. Ifstream yanlış çalışıyor veya ofstream kurulu farklı bir dosya adı gerekiyor emin değilim. İşte kaynak kodum.Mac üzerinde

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() { 

    ifstream infile("Users/bryanmichaelnorris/documents/extra credit assignment.docx"); 

    string line; 
    int numks = 0; 

    while (getline(infile,line)) {  
     int x = 0;   
     for (std::string::iterator it=line.begin(); it!=line.end(); ++it) {    
      if (line[x] == 'k') {     
        numks++;    
      }    
      x++;   
     }  
    }   

    infile.close();  
    ofstream outfile("number of k's.docx"); 
    outfile << "There are " << numks << " K's in the file." << endl; 
    outfile.close();   
    return 0; 
} 
+1

'" Kullanıcılar/... "', bu adın * başındaki * bir '/' koyarak başlarım. Doğrulama yapmak istediğinizde, giriş dosyanız doğru bir şekilde açıldıysa, dünyadaki her şeyin doğru olduğunu varsaymaktan ziyade * testi * yapmak kesinlikle zarar vermez. Ayrıca, Xcode altında çalışırken çalışan dizinin genellikle insanların düşündüğü şeylere yakın olmadığı (ancak şema düzenleyicinizde değiştirebildiğiniz) gibi çıktı dosyasının nerede yazıldığını araştırmak isteyebilirsiniz. – WhozCraig

+0

@WhozCraig neredeyse çiviye çarptı – trojanfoe

+0

Bir MS-Word belgesi olmayan bir dosya için '.docx uzantısı kullanmayın ... Gerçekten bir uzantıya ihtiyacınız varsa, belki de .txt' bir çok daha iyi bir tane. Giriş dosyası da bir MS-Word dosyasıysa, bu şekilde 'k' harfini saymazdım, çünkü 'k' metnin kendisinden başka bir şey için kullanılmış olabilir. –

cevap

0

Açık dosyalar için onaylar eklendi.

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() 
{ 
    const char * csInputFileNane="Users/bryanmichaelnorris/documents/extra credit assignment.docx"; 
    ifstream infile(csInputFileNane); 
     if (!infile.is_open()) { 
     cerr << "Cannot open file \""<<csInputFileNane<<'"'<<endl; 
     return -1; 
    } 
    string line; 

    int numks = 0; 

    while (getline(infile,line)) 
    { int x = 0; 
     for (std::string::iterator it=line.begin(); it!=line.end(); ++it)    { 
      if (line[x] == 'k') 
      { 
       numks++; 
      } 
      x++; 
     } 
    } 
    infile.close(); 
    const char *csOutFileName="number of k's.docx"; 
    ofstream outfile(csOutFileName); 
    if (!outfile.is_open()) { 
     cerr << "Cannot open file \""<<csOutFileName<<'"'<<endl; 
     return -1; 
    } 
    outfile << "There are " << numks << " K's in the file." << endl; 
    outfile.close(); 
    return 0; 

}