getline with delimiter

时间:2013-10-13 20:09:01

标签: c++ string loops io getline

在固定数组上使用getline循环的正确方法是什么?如果在读取字符块中找不到分隔符,则以下循环将停止。

char data[4];
while (cin.getline(data, 4, '.'))
{
  ...
}

导致循环失败的示例数据:

asdasdasdasd.asdasdasd

1 个答案:

答案 0 :(得分:3)

“在固定数组上使用getline循环的正确方法是什么?”

  • 第1步:不要使用C风格的char数组
  • 第2步:不要依赖对你的程序怜悯的输入

可能的解决方案:

std::string token;
while (std::getline(std::cin, token, '.')) {
    if (token.empty()) {
        // TODO
        continue; // ?
    }
    if (token.size() == 4) {
        // TODO
    }
    else {
        // TODO
    }
}