gpt4 book ai didi

c++ - getline() 分隔符问题

转载 作者:行者123 更新时间:2023-11-30 04:20:45 25 4
gpt4 key购买 nike

我正在尝试通读一个文件并在每一行中获取特定的字符串。我需要的字符串的末尾用分号标记。我这样做没有问题,但我注意到带有定界符的 getline() 会自动将新行附加到我的字符串。

 filename.open(FileName);
while(filename)
{
getline(filename, name[counter], ';');

filename >> amount[counter] >> unit[counter] >> calories[counter];
counter++;

}

因此,当我去打印名称数组时,会有 1 个额外的换行符,我自己没有放在那里,就好像一路上有一个额外的 '\n' 被拾取一样。有没有人有办法解决吗?下面是我正在阅读的文件格式示例。

戴夫·琼斯; 24 高
吉莉安·琼斯; 34短等等……

最佳答案

运行后

filename >> amount[counter] >> unit[counter] >> calories[counter];

换行符仍在缓冲区中。当您只使用“>>”时,这通常不是问题;它只是忽略换行符。但是,当您混合使用 getline 和“>>”时,您需要忽略“>>”留下的换行符。尝试这样的事情:

filename >> amount[counter] >> unit[counter] >> calories[counter];
// Ignore first character or everything up to the next newline,
// whichever comes first
filename.ignore(1, '\n');

这有点多余,但很容易阅读。

关于c++ - getline() 分隔符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15060480/

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