0

我正在为一个班级做 C++ 评估,十年来我没有使用过 C++,所以这可能是我想念的简单的东西;但是,我似乎无法弄清楚。

我有一个用不产生输出的函数定义的类;看起来它甚至没有运行,我不知道为什么。有人可以向我指出我的问题吗?

问题: cout来自getwords类的函数readwords不显示任何结果。

这是我的课:

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

问题似乎是重新定义我自己的班级。在实际编码我需要使用的功能时:

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

一旦做这个输出产生罚款。

于 2012-09-03T18:45:24.617 回答
0

我刚刚编译并运行了您的代码,但代码本身没有任何问题,除了我需要包含以使用“cout”方法。“I got here”已成功显示在我的 ubuntu 机器上。你的执行环境是什么?你应该先检查一下。

于 2012-08-30T07:08:12.047 回答