部分代码:
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)所以我在这里做错了什么?
编辑: 我认为第二个参数指的是你想读的哪一行。任何人都可以向我解释我如何以不同的方式选择我能阅读的行吗?
答案 0 :(得分: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&amp; is,string&amp; str,char delim);
istream的&安培; getline(istream&amp;&amp; is,string&amp; str,char delim);
istream的&安培; getline(istream&amp; is,string&amp; str);
istream的&安培; getline(istream&amp;&amp; is,string&amp; str);
您以错误的方式使用getline
。
如果您尝试使用getline
从文件中读取行,可以尝试以下操作:
string currLine;
getline(userFile, currLine);
//do something with current line
答案 1 :(得分: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::istream
和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
{
...
}