Ubuntu 这是g+中cout和getline的错误吗+;4.7.2?

Ubuntu 这是g+中cout和getline的错误吗+;4.7.2?,ubuntu,g++,cout,getline,Ubuntu,G++,Cout,Getline,2012/11/13更新: 我发现我的问题已经被问过了。 以下是处理不同行尾文本文件的一个很好的解决方案: 有可能对libstdc++做出贡献吗?怎么做 2012/11/11 我发现cout有点问题 如果getline()返回了两个字符串, 第二个字符串将覆盖输出中的第一个字符串。 这是示例代码: #包括 #包括 使用名称空间std; int main() { //正常代码 可能比libstdc++中的错误更可能(这可能会发生,在gcc中也会发生,但现在很少见),输入文件中有不正确的行终止-

2012/11/13更新: 我发现我的问题已经被问过了。 以下是处理不同行尾文本文件的一个很好的解决方案:

有可能对libstdc++做出贡献吗?怎么做


2012/11/11

我发现cout有点问题
如果getline()返回了两个字符串,
第二个字符串将覆盖输出中的第一个字符串。

这是示例代码:

#包括
#包括
使用名称空间std;
int main()
{
//正常代码

可能比libstdc++中的错误更可能(这可能会发生,在gcc中也会发生,但现在很少见),输入文件中有不正确的行终止-可能是使用了DOS/Windows
CR+LF
行结尾,即-as
getline()
丢弃LF-结果是在第一个字符串上写入第二个字符串。如果您通过某种十六进制转储程序运行程序的输出,例如
xxd
,则可以很容易地看到这一点


在您读取的字符串末尾检查
\r
(顺便说一句,MacOS到版本9仅使用此作为下线标记),修复您的输入,或在打印时适当地向输出中添加新行。

我收到了。非常感谢!我忘记了我以前为文本编辑器Geany设置了CR+LF模式。我会检查一下。我在LF模式下重新编写了输入文件,代码正常工作。但我想知道,为什么我的文本编辑器可以识别这些不同的行结尾,而编译器却不能识别?:(C++使用
\n
作为行分隔符,文本编辑器尝试猜测使用什么(对于新文件,他们使用系统默认值,对于现有文件,他们通常检查第一行结尾)@彼得尔夫,我认为是时候打破规则了。有人知道该在哪里发布这个问题吗?@ EriCSN,如果你想抱怨<代码> \n’/Case>是行终止符,我想你必须向C++标准化委员会提交一个投诉。不过我不确定你会有多少成功。.有人能告诉我把这个问题提交到哪里吗?可以在Bugzilla上发布吗?
hello
123
Normal result:
hello123
Bug?
123lo