我正在读取数据到结构数组。数据由可能的空行分隔,我必须忽略。我的代码无法工作,我想知道为什么
struct Location
{
string state;
string city;
int zipcode;
}
并且继续阅读我的麻烦。
while (!fin.eof() && size < 50)
{
getline (fin, location[size].state);
getline (fin, location[size].city);
fin >> location[size].zipcode;
if (location[size].empty()) //to ignore blank lines but its not working?
continue;
size++;
}
任何想法?它可能是编译器吗?
答案 0 :(得分:5)
您似乎正在尝试检查空字符串,但无意中尝试在empty()
上调用Location
。
你的意思是
if (location[size].state.empty() && location[size].city.empty())
continue;
修改强>
如果您希望代码示例按原样运行,并且您可以修改struct Loaction
,则可以执行以下操作。
struct Location
{
std::string state;
std::string city;
int zipcode; //who cares about zip+4
Location():zipcode(0){};
bool empty()
{
return state.empty() && city.empty() && !zipcode;
}
};