isstream :: get()跳过第一个char

时间:2017-04-25 13:39:55

标签: c++ file input get char

我正在尝试从文件中读取并且能够成功读取,但isstream :: get()函数会一直跳过第一个字符。我在线阅读它是因为cin通常会使缓冲区跳过第一个字符,但我不知道如何在我的结尾处修复它。

这是我的主要内容:

int main () {

string fileName;

cout << "Please enter the name of the input file: \n";
cin >> fileName;

//Creates an object and executes appropriate functions
pa3* obj = new pa3(fileName);
obj->seperateCode();
obj->printFields();

return 0;
}

这是构造函数

 //Constructor
    pa3 (string fileName) {

        char word;
        string temp;

        ifstream userFile;

        string fullFileName = "\"" + fileName + "\"";

        userFile.open(fileName);

        if (!(userFile.is_open())) {
            cout << "Not a valid file\n";
            cout << "Exiting...\n";
            exit(0);
        }
        else {

          //  userFile.unget();

            while (!userFile.eof()) {

                userFile.get(word);

                temp += word;

                if (isspace(word)) {

                    stackImplementation::push(temp, totalFile);
                    temp.clear();

                    }

            }
        }

        for (vector<string>::iterator it = totalFile.begin(); it != totalFile.end(); ++it) {
            cout << *it << " ";
        }
    }

我尝试过在线搜索,但无法将解决方案应用于我的问题,因为大多数人使用cin并忽略以解决问题。任何帮助将不胜感激。

0 个答案:

没有答案