【发布时间】:2016-04-25 15:04:30
【问题描述】:
所以,我需要从stdin逐字符读取几行数字;也就是说,在每个字符读取之后,我需要对其做一些事情,只有在那之后我才能读取另一个;我还需要知道线路何时结束,另一条线路何时开始。这些数字是换行符分隔的,我对此没有问题;但是在最后一个字符串之后没有\n,所以我在确定何时停止读取最后一行时遇到了问题。我觉得自己真的很愚蠢,但谷歌搜索根本没有帮助我。我认为它应该是这样的:
char b;
for (size_t i = 0; i!= N; ++i) {
while (some_mysterious_condition) {
std::cin >> b;
//so on
}
我不知道我应该在那里放置什么条件。我试过使用std::cin.get(b),但它似乎忽略了换行符。
【问题讨论】:
-
getline满足您的需求。 -
最后一个字符串后面是什么?默认情况下 cin 考虑所有空格,包括 EOF.as deliminator。顺便说一句,您要解决什么问题?如果您想读取字符串,为什么要将数据读取到字符中?
-
@bashrc 什么都没有,文件到此结束。而且,如果您真的必须知道,尽管这与所讨论的主题无关,但我正在逐位阅读 BigInteger 数字
-
要一次读取一个字符的行,使用 getline 读取,将行加载到 std::istringstream 并从中读取。这样您就可以逐行阅读并阅读所有字符。
-
那么使用
read并自己解释所有字符可能会有所帮助。但请记住,代码总是难以维护且更容易出错。