-1

部分代码:

string name;

    cin >> name;

    ifstream userFile( name + ".txt");
    if (userFile.good()){
      // read away
        cout << "Password? \n";

        string pw;

        cin >> pw;

        //checking if pw matches
        getline(userFile, 1);

所以我使用命名空间 std 并包含 sstream 字符串 fstream iostream。它说参数类型是 (std::ifstream, int) 那么我在这里做错了什么?

编辑:我认为第二个参数是指您要阅读的那一行。谁能向我解释我如何选择可以以不同方式阅读的行?

4

2 回答 2

0

std::getline具有以下签名:

std::getline

   template< class T, class U, class Allocator >
   std::basic_istream<T, U>& getline(std::basic_istream<T, U>& input,
                                       std::basic_string<T,U, Allocator>& str,
                                       CharT delim);

也就是说,它需要一个std::istreamand的实例std::string。此方法用于将流的整行消耗input到缓冲区str中。

这似乎不是您正在寻找的方法。您说您需要检查userFile密码是否匹配。如果那么你应该试试这个:

std::string password;

userFile >> password // insert entire line into password

if (password == "1") // check if password is equal to 1
{
    ...
}
于 2013-05-13T00:51:30.233 回答
0

引用std::istream::getline,它没有带有ifstream对象和 size_t.

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

还引用std::getline (string),它具有以下内容:

istream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);

getline以错误的方式使用。如果您尝试使用getline从文件中读取行,您可以尝试以下操作:

string currLine;
getline(userFile, currLine);
//do something with current line
于 2013-05-13T00:44:51.717 回答