1

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

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

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

asdasdasdasd.asdasdasd
4

1 回答 1

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
    }
}
于 2013-10-13T20:16:29.747 回答