【发布时间】:2017-11-18 16:42:36
【问题描述】:
我有一个类的方法,它接受一个键变量并在未完成的映射中查找键。值是一个字符串example: "12132, jack_arog, 1990:12:8:3:25:3";方法将使用字符串流中的peek() 来识别',' 和' ' 以忽略它们并将其余部分放入向量中。 Afterwards 方法将向量的成员分配给对象的属性。
编译期间收到错误:
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);
}
}
}
}
【问题讨论】:
-
ss.peek == ' '缺少()吗? -
ooOOOOmmmGGGGG,谢谢你uuuu
-
:-p 这只是你编码时间过长的标志。休息时间!大声笑
-
我知道:D,我可能应该一起重做这个方法,它非常丑陋。
-
我在 SO 上看到的情况更糟。我觉得它看起来不错:)
标签: string visual-studio c++11 header-files peek