2016-03-28 14 views
-2

ランダムなファイル(mac-xcode)を読み込み、ドキュメント内の文字kのインスタンスを調べようとしています。その番号をアウトアウトファイルとして印刷します。私の問題は、outfileが書かれていないとnums_kは0として戻ってきていることです。ifstreamが正しく動作していないかofstreamが別のファイル名を確立する必要があるかどうかわかりません。ここに私のソースコードです。ifstream of mac on

#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

'"ユーザー/ ... "'、私はその名前の*先頭に '/'を置くことから始めます。また、入力ファイルが正しく開かれているかどうか検証したい場合は、すべてが正しいと仮定するのではなく、テストしても間違いありません。また、Xcodeで実行中の現在の作業ディレクトリは通常、人が思うものに近いものですが、スキーマエディタで変更することができるため、出力ファイルがどこに書き込まれているかを調べることもできます。 – WhozCraig

+0

@WhozCraigはほぼ確実に頭の爪に当たった – trojanfoe

+0

MS-Word文書ではないファイルに '.docx'拡張子を使わない...拡張子が本当に必要な場合は、おそらく' .txt'がはるかに良いもの。入力ファイルがMS-Wordファイルでも、このように文字 'k'は数えられません。なぜなら、 'k'がテキスト以外のものに使われているからです。 –

答えて

0

開いているファイルにバリデーションを追加しました。

#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; 

}