gpt4 book ai didi

c++ - 来自 stdin 的 Cin 是一行的结尾

转载 作者:行者123 更新时间:2023-11-28 07:47:47 28 4
gpt4 key购买 nike

例如我有一个文件

M
4
2
//comments
.#..

它通过标准输入提供给程序。我不能使用 fstream,只能使用 iostream。

如果我想逐个字符地阅读整个内容,我可以这样做吗?

char first_letter, first_num, second_num;
cin >> first_letter;
cin >> first_num;
cin >> second_num;

或者行尾会弄乱 cin 吗?比如,cin 在读取第一个字母的 M 后是否知道它需要转到末尾行?

其次,我不想阅读评论行。我的计划是,如果我看到/我将使用 getline 来“删除”该行,然后移至 . # 。 .并将它们存储在我的数组中。这是最好的方法吗?

最佳答案

首先,流默认跳过空格(空格、制表符、换行符),所以这部分很简单。

现在,关于注释行,这有点复杂。您可以使用 std::getline() 读取一行。这会将行存储在一个字符串中并丢弃尾随的换行符。但是,如果您例如读取上面代码中的第一个字母,换行符保留在流中,因此 getline() 将读取一个空字符串。简而言之,不要混合基于行和基于标记的输入。

在实践中,您读取一行并手动解析它或为此创建一个流:

while(getline(in, line)) {
if(line.empty()) continue; // empty line
if(line[0] == '#') continue; // comment line
// parse line
std::stringstream s(line);
char c;
s >> c;
}

关于c++ - 来自 stdin 的 Cin 是一行的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544424/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com