[问题] 为什么 getline() 不加 endl 就没办法印出

楼主: hunandy14 (Charlott.HonG)   2021-05-22 02:06:43
代码在VS2019上执行是正常的,但是在gcc上却出了奇怪的状况
想请问为什么这段代码里面的 cout 只要结尾没有 endl 就没办法输出了
https://replit.com/@hunandy14/svtest
网站可以直接执行,错误的情况跟我在电脑上跑的是一样的
电脑上的gcc版本
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
g++ -std=c++17 -o main main.cpp; ./main
作者: oToToT (屁孩)   2021-05-22 04:34:00
在 repl 上感觉是被 \r 坑了而已,它实际上是有印出来的喔喔,你电脑上也是 ubuntu ,那就是 \r 的问题吧你可以试试看 printf("2\r"); 你可能也不会看到它的输出或者 printf("2\r1") 你可能只会看到一个 "1",因为 \r 把要印的 cursor 又移到最前面了,所以前面的 2 会被后面的输出盖掉,导致你没看到它
作者: Lipraxde (Lipraxde)   2021-05-22 12:41:00
./main > out.txt,再把 out.txt 开起来看,你就知道是不是真的没输出了
作者: LPH66 (-6.2598534e+18f)   2021-05-22 14:08:00
这样说吧, 写 C/C++ 只有很少的机会会写出 \r如果只是单纯要换行的话 \n 就够用了会用 \r 的大概只有 (1) 萤幕显示单行更新 (如单行进度条)(2) 处理的根本就是二进制资料单行更新原理就是前几楼提的 \r 的作用: 移光标到这行开头C++ 的 endl 其实只是印出 "\n" 后加 flush 而已
作者: Lipraxde (Lipraxde)   2021-05-22 19:50:00
dos2unix <- 好用
作者: rex0707 (我就是我)   2021-05-29 19:11:00
推楼上 我以前也遇过从win复制文字档到centos会有问题

Links booklink

Contact Us: admin [ a t ] ucptt.com