stringstream peek() 错误 C3867
stringstream peek() error C3867
我有一个 class 的方法,它接受一个键变量并在未完成的映射中查找键。 Value 是一个字符串 example: "12132, jack_arog, 1990:12:8:3:25:3"
;方法将使用 stringstream 中的 peek()
来识别 ','
并使用 ' '
忽略它们并将其余部分放入向量中。之后的方法会将 vector 的成员分配给对象的属性。
编译时收到错误:
if (ss.peek() == ',' || ss.peek == ' ')
ss.ignore();
Error C3867 'std::basic_istream<char,std::char_traits<char>>::peek': non-standard syntax; use '&' to create a pointer to member
我查了这个错误,大多数人说你在调用函数时忘记了 (),但我不认为这是我的问题。
方法:
void Account::find_account(std::string name, std::string ID)
{
std::string key = name + "," + ID;
Account new_account;
std::unordered_map<std::string, std::string>::const_iterator got = map.find(key);
if (got == map.end())
std::cout << "not found";
else
{
std::string my_string = got->second;
std::vector<std::string> holder;
std::stringstream ss(my_string);
std::string i;
while (!my_string.empty() && ss >> i)
{
holder.push_back(i);
if (ss.peek() == ',' || ss.peek == ' ')
ss.ignore();
}
for (int i = 0; i < holder.size(); i++)
{
if (i = 0)
new_account.ID = holder.at(i);
if (i = 1)
new_account.account_holder = holder.at(i);
if (i = 2)
{
std::string::size_type sz;
new_account.amount_available = std::stof(holder.at(i), &sz);
}
if (i = 3)
{
new_account.date_created = holder.at(i);
}
}
}
}
"I looked up this error and most say you forgot () when calling a function, however i do not believe this is my problem."
当你的编译器告诉你错误就在这一行时,你怎么能说呢?此外,它告诉您该错误与您对 peek 的(滥用)使用特别相关,我引用:
"...peek': non-standard syntax; use '&' to create a pointer to member
我翻译:编译器认为你 不是 试图调用 peek,因为你没有键入所需的 () 来这样做。因此,如果您有任何机会尝试获取函数地址,您应该在函数名称前加上 & 以使语法正确。
计算机是愚蠢的,我可以告诉你,但它们很少出错。
我有一个 class 的方法,它接受一个键变量并在未完成的映射中查找键。 Value 是一个字符串 example: "12132, jack_arog, 1990:12:8:3:25:3"
;方法将使用 stringstream 中的 peek()
来识别 ','
并使用 ' '
忽略它们并将其余部分放入向量中。之后的方法会将 vector 的成员分配给对象的属性。
编译时收到错误:
if (ss.peek() == ',' || ss.peek == ' ')
ss.ignore();
Error C3867 'std::basic_istream<char,std::char_traits<char>>::peek': non-standard syntax; use '&' to create a pointer to member
我查了这个错误,大多数人说你在调用函数时忘记了 (),但我不认为这是我的问题。
方法:
void Account::find_account(std::string name, std::string ID)
{
std::string key = name + "," + ID;
Account new_account;
std::unordered_map<std::string, std::string>::const_iterator got = map.find(key);
if (got == map.end())
std::cout << "not found";
else
{
std::string my_string = got->second;
std::vector<std::string> holder;
std::stringstream ss(my_string);
std::string i;
while (!my_string.empty() && ss >> i)
{
holder.push_back(i);
if (ss.peek() == ',' || ss.peek == ' ')
ss.ignore();
}
for (int i = 0; i < holder.size(); i++)
{
if (i = 0)
new_account.ID = holder.at(i);
if (i = 1)
new_account.account_holder = holder.at(i);
if (i = 2)
{
std::string::size_type sz;
new_account.amount_available = std::stof(holder.at(i), &sz);
}
if (i = 3)
{
new_account.date_created = holder.at(i);
}
}
}
}
"I looked up this error and most say you forgot () when calling a function, however i do not believe this is my problem."
当你的编译器告诉你错误就在这一行时,你怎么能说呢?此外,它告诉您该错误与您对 peek 的(滥用)使用特别相关,我引用:
"...peek': non-standard syntax; use '&' to create a pointer to member
我翻译:编译器认为你 不是 试图调用 peek,因为你没有键入所需的 () 来这样做。因此,如果您有任何机会尝试获取函数地址,您应该在函数名称前加上 & 以使语法正确。
计算机是愚蠢的,我可以告诉你,但它们很少出错。