所以,我需要从stdin
char-by-char读取几行数字;也就是说,在每次读取字符后,我需要对它做一些事情,然后才能读取另一个字符;我还需要知道线路何时结束而另一条线路开始。这些数字是换行符号,我没有问题;但是在最后一个字符串之后没有\n
,所以我在确定何时停止读取最后一行时遇到问题。我觉得自己真的很蠢,但谷歌搜索根本没有帮助我。我认为它应该是这样的:
char b;
for (size_t i = 0; i!= N; ++i) {
while (some_mysterious_condition) {
std::cin >> b;
//so on
}
我无法弄清楚我应该放在哪里。我尝试过使用std::cin.get(b)
,但它似乎忽略了换行符。
答案 0 :(得分:0)
根据您的评论,您看起来需要阅读字符吗?
char b;
for (size_t i = 0; i!= N; ++i) {
while (some_mysterious_condition && std::cin >> b) {
//so on
}
cin在遇到EOF(表示文件/流的结尾的字符)时会返回false。
答案 1 :(得分:0)
你能不能只检查最后一个char读取的值是否等于'\ 0'然后中断?
编辑:
那样的话:
char b;
for (;;) {
for (;;)
{
b = std::cin.get();
if ((b == '\0') || (b == '\n')) {
//new line or end of file was found, skip handling that character
break;
}
//do something with char b
}
if (b == '\0') break; //exit outer loop if end of file detected
}