0

私はクラスの C++ 割り当てを行っていますが、10 年以上 C++ を使用していないため、これは私が見逃している単純なものである可能性があります。しかし、私はそれを理解できないようです。

出力を生成しない関数で定義したクラスがあります。実行されていないように見えますが、その理由はわかりません。誰かが私の問題を指摘してくれませんか?

問題: クラスcoutの関数から結果が表示されません。getwordsreadwords

これが私のクラスです:

class readwords {
    private:
            char c;
            //string aword;

    public:
            void getwords(std::istream& file) {
                            cout << "I got here" << std::flush;
                    /*while(file.good()) {
                            cout << "I got here\n";
                            c = file.get();
                            if(isspace(c)) cout << "\n"; //continue;
                            if(isalnum(c)) {
                                    cout << c; //aword.insert(aword.end(),c);
                            }
                    }
                    */
            }
};

私のメインから呼び出されているもの:

#include <fstream>
#include <stdlib.h>
#include "lab1.h"

using namespace std;
readwords wordsinfile;
words wordslist;

int main ( int argc, char *argv[] )
{
    if ( argc != 2 ) {
            // Looks like we have no arguments and need do something about it
            // Lets tell the user
            cout << "Usage: " << argv[0] <<" <filename>\n";
    } else {
            // Yeah we have arguements so lets make sure the file exists and it is readable
            ifstream ourfile(argv[1]);
            if (!ourfile.is_open()) {
                    // Then we have a problem opening the file
                    // Lets tell the user and exit
                    cout << "Error: " << argv[0] << " could not open the file. Exiting\n";
                    exit (1);
            }

            // Do we have a ASCII file?
            if (isasciifile(ourfile)) {
                    cout << "Error: " << argv[0] << " only can handle ASCII or non empty files. Exiting\n";
                    exit(1);
            }

            // Let ensure we are at the start of the file
            ourfile.seekg (0, ios::beg);
            // Now lets close it up
            ourfile.close();
    }

    // Ok looks like we have past our tests
    // Time to go to work on the file

    ifstream ourfile2(argv[1]);
    wordsinfile.getwords(ourfile2);

}

ご協力いただきありがとうございます。

4

3 に答える 3

1

デバッガーを使用してみてください。ほとんどの IDE (NetBeans、Code::Blocks など) は、gdb との対話型インターフェースを提供します。

于 2012-08-30T05:48:07.407 に答える
0

コードをコンパイルして実行しましたが、「cout」メソッドを使用するためにインクルードする必要があったことを除いて、コード自体に問題はありません。「私はここに来ました」が私のubuntuマシンに正常に表示されました。実行環境は?最初に確認する必要があります。

于 2012-08-30T07:08:12.047 に答える
0

問題は、自分のクラスを再定義しているようです。実際に使用する必要のある関数をコーディングするとき:

in readwords::countwords(std::istream& file) {
 ....
}

この出力を実行すると、正常に出力されました。

于 2012-09-03T18:45:24.617 に答える