我正在爲一個類做一個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);
}
感謝您的幫助,您可以提供。
您在'argc!= 2'情況下的代碼既不會刷新也不會退出,只是讓代碼繼續去引用不存在的'argv [1]'。 –
'argv [1]'被定義。真的,我沒有遍歷所有可能的參數,因爲我還沒有得到那麼遠,但是我已經證實'argv [1]'在用於'ifstream ourfile2(argv [1])時被設置了''' – Ryan
Make 'readwords'或'words'的構造函數沒有終止。你可以發佈一個自包含的可編譯示例來演示錯誤嗎? –