2017-02-08 7 views
0

私は現在、ユーザーが名前を入力したx個のファイルの内容を取り込み、そこにいくつかの文字をいくつか読み込んでそれをユーザーに出力するという学校の割り当てに取り組んでいます。私はこれらはifstream、ofstreamの、などの機能がどのように動作するかの非常に小さな理解してい各文字を別々のファイルから読み込みますか?

33:26: note: candidates are: 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :283:7: note: std::basic_istream<_CharT, _Traits>::int_type std::basic_istream<_                            CharT, _Traits>::get() [with _CharT = char, _Traits = std::char_traits<char>, st                            d::basic_istream<_CharT, _Traits>::int_type = int] 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :283:7: note: candidate expects 0 arguments, 1 provided 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :297:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _T                            raits>::get(std::basic_istream<_CharT, _Traits>::char_type&) [with _CharT = char                            , _Traits = std::char_traits<char>, std::basic_istream<_CharT, _Traits>::char_ty                            pe = char] 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :297:7: note: no known conversion for argument 1 from 'int' to 'std::basic_ist                            ream<char>::char_type& {aka char&}' 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :324:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _T                            raits>::get(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize, st                            d::basic_istream<_CharT, _Traits>::char_type) [with _CharT = char, _Traits = std                            ::char_traits<char>, std::basic_istream<_CharT, _Traits>::char_type = char, std:                            :streamsize = int] 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :324:7: note: candidate expects 3 arguments, 1 provided 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :335:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_is                            tream<_CharT, _Traits>::get(std::basic_istream<_CharT, _Traits>::char_type*, std                            ::streamsize) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_                            istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>, std::basic_                            istream<_CharT, _Traits>::char_type = char, std::streamsize = int] 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :335:7: note: candidate expects 2 arguments, 1 provided 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :358:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _T                            raits>::get(std::basic_istream<_CharT, _Traits>::__streambuf_type&, std::basic_i                            stream<_CharT, _Traits>::char_type) [with _CharT = char, _Traits = std::char_tra                            its<char>, std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_st                            reambuf<char>, std::basic_istream<_CharT, _Traits>::char_type = char] 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :358:7: note: candidate expects 2 arguments, 1 provided 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :368:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_is                            tream<_CharT, _Traits>::get(std::basic_istream<_CharT, _Traits>::__streambuf_typ                            e&) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_istream<_C                            harT, _Traits>::__istream_type = std::basic_istream<char>, std::basic_istream<_C                            harT, _Traits>::__streambuf_type = std::basic_streambuf<char>] 
/opt/csw/lib/gcc/i386-pc-solaris2.10/4.6.3/../../../../include/c++/4.6.3/istream                            :368:7: note: no known conversion for argument 1 from 'int' to 'std::basic_ist                            ream<char>::__streambuf_type& {aka std::basic_streambuf<char>&}' 

#include <iostream> 
#include <iomanip> 
#include <cstdlib> 
#include <fstream> 
using namespace std; 

int main() 
{ 
    const int fileNameSize = 20; 
    int fileCount = 0; 
    ifstream inFile; 
    ofstream outFile; 
    int numRows, numPRow, num, rowSum; 
    char inputFileName [fileNameSize+1]; 
    cout << "How many files are being processed?\n"; 
    cin >> fileCount; 
    for (int i = 0; i <= fileCount; i++) 
    { 
     cin >> inputFileName; 
     inFile.open(inputFileName); 
     if (!inFile) 
     { 
      cout << "Could not open input file.\n"; 
      return 0; 
     } 
     else 
     { 
      int acount, tcount, ecount, ocount, icount, ncount, scount, hcount, rcount; 
      char c; 
      while (!inFile.eof()) 
      { 
       //inFile >> num; 
       inFile.get(tolower(c)); 
       switch (c) 
       { 
        case 'a': acount++; 
        case 't': tcount++; 
        case 'e': ecount++; 
        case 'o': ocount++; 
        case 'i': icount++; 
        case 'n': ncount++; 
        case 's': scount++; 
        case 'h': hcount++; 
        case 'r': rcount++; 
       }    
      } 
      int chartotal = acount + tcount + ecount + ocount + icount + ncount + scount + hcount + rcount; 
      cout << "File name: " << inputFileName << endl; 
      cout << "Number of E's: " << ecount << endl; 
      cout << "Number of T's: " << tcount << endl; 
      cout << "Number of A's: " << acount << endl; 
      cout << "Number of O's: " << ocount << endl; 
      cout << "Number of I's: " << icount << endl; 
      cout << "Number of N's: " << ncount << endl; 
      cout << "Number of S's: " << scount << endl; 
      cout << "Number of H's: " << hcount << endl; 
      cout << "Number of R's: " << rcount << endl; 
      cout << "Total Number of Characters: " << chartotal << endl; 
     } 
    } 
    //cout << "exit colm flag"; 
    //cout << "exit row flag\n"; 

} 

コンパイルした後、私は33行とエラーが表示されます。 これは私がこれまで持っているものです単にサンプルファイルからそれらを転記し、それらを所望のプログラムに操作するだけである。 .txtファイルから各文字を読み込むための特定の関数がありますか?

+3

で述べたように、あなたのコードでより多くの問題があることに注意してください、あなたは**休憩を入れたいかもしれません。**各caseラベルがにした後望ましくない結果を防ぐ。 –

+1

エラー逐語エラーメッセージも同様に投稿してください。 'tolower()'の結果は、 '' std :: istream :: get() 'の入力パラメータとして取ることができません。](http://en.cppreference.com/w/cpp/io/basic_istream /取得する)。 –

+0

ユーザーにファイル名の入力を求める必要があります。さもなければ、(少なくともユーザの視点から)プログラムは何の理由もなく一時停止する。 –

答えて

2

あなたが参照している問題ここにある:コンパイラは、特定の関数呼び出しの該当過負荷がありませんことを示しています場合は、あなたが取るべき第一のアクションはdocumentationを読み、チェックすることです

inFile.get(tolower(c)); 

その関数を呼び出すために必要なもの。

問題はstd::istream::get()char&タイプを期待しながらstd::tolower()の結果型は、右辺値としてintであることです。

あなたは、固定コードhereをしてくださいを参照してください

inFile.get(c); 
c = tolower(c); 

のようにそのコードを修正することができます。


コメントのエラーメッセージについての関連以外

+1

なぜ 'tolower'を使うときに' static_cast'が必要ですか? 'int'から' char'へ明示的に変換していますか? –

+0

'c = tolower(static_cast (c));' 'c 'が負の値である場合の未定義の振る舞いを回避し、冗長なキャストを削除します。 –

+0

@thomasはい、それが意図でした。私の以前の答えはニックピッカーによって攻撃されることが多く、キャストは 'int'を' char'型に適用するために必要です。 –

関連する問題