- cross-posted to:
- programmerhumor@lemmy.ml
- cross-posted to:
- programmerhumor@lemmy.ml
fprintf(stdout, "%c", '\012');
print('string\n', end='')
I just learned that in Python, it’s fucking terrible. Python is a fucking mess and my next script will be in a different language.
Perhaps TS is not a terrible language for shell scripts after all
python is a bad joke that never ends
As a python lover, I have to ask, what don’t you like about it and what languages do you generally prefer?
Fuck endl, all my homies hate endl
bloods 4 lyfe
Cout << “\n”; is dumb and you should feel bad
Feel this is relevant https://www.youtube.com/watch?v=IkpZggx4yNI
You’re right, that is incredibly dumb. Just not for the reasons you think it is. Imagine using iostream rather than stdio and unironically trying to clown on \n
Is this not a debate for freshman students and other assorted opinionated know-nothings? Or just people shitposting.
My mistake. You think it’s srs.
(And your opinion is still bad)
Oh no! Did I hurt your feelings by clapping back when you insulted me on a shitpost comment chain? Your lack of self awareness is astounding
I am very sorry to remind everyone about the existence of Visual Basic, but it has:
- VbCrLf
- VbNewLine
- ControlChars.CrLf
- ControlChars.NewLine
- Environment.NewLine
- Chr(13) & Chr(10)
And I know what you’re asking: Yes, of course all of them have subtly different behavior, and some of them only work in VB.NET and not in classic VB or VBA.
The only thing you can rely on is that “\r\n” doesn’t work.
Apology not accepted, fuck you for reminding me!
great reminder to avoid microsoft products as much as i can
Simple.
\n
when you just want a newline.
endl
when you need to flush at the moment.Useful in case you are printing a debug output right before some function that might do bed stuff to buffers.
Edit: I wrote
println
instead ofendl
somehow. Guess I need more downtimeI only program in C. I was under the assumption that \n also flushes
It depends on whether you are printing to a terminal or to a file (and yes the terminal is also a file), and even then you can control the flushing behaviour using something like
unbuffer
I remember having to
fflush
a couple of times.
No debate, std::endl can be a disaster on some platforms due to flushing crap all the time.
Considering std::cout should only directly be used when you are too lazy to place breakpoints, I totally get the decision to auto-flush.
It’s a very C++ thing that the language developers saw the clusterfuck that is stream flushing on the kernel and decided that the right course of action was to create another fucking layer of hidden inconsistent flushing.
programmers manage to do stupid shit in every language. i was wondering if there was a way to stop them, and golang comes close but maybe proves it can’t be done. idk!
I hear C++ was greatly inspired by the fifth circle of hell.
Just because the box says something is flushable doesn’t mean you should flush it.
printf
is superior and more concise, andsnprintf
is practically the only C string manipulation function that is not painful to use.Try to print a 32-bit unsigned int as hexadecimal number of exactly 8 digits, using
cout
. You can dostd::hex
andstd::setw(8)
andstd::setfill('0')
and don’t forget to usestd::dec
afterwards, or you can just, you know,printf("%08x")
like a sane person.Just don’t forget to use
-Werror=format
but that is the default option on many compilers today.C++23 now includes
std::print
which is exactly likeprintf
but better, so the whole argument is over.I went digging in cppref at the format library bc I thought c++20 or c++23 added something cool.
Found
std::print
and was about to reply to this comment to share it bc I thought it was interesting. Then I read the last sentence.Darn you and your predicting my every move /j
I prefer \n for 0.001% better performance
I prefer \n for less typing.
I prefer endl for more typing because it lets me pretend to work more than I am
^ least deranged coder
std::cout << "\nwhy not both" << std::endl;
deleted by creator
In PHP it exists as well. I try to use PHP_EOL but when I’m lazy I simply do “\n”.
For me the answer is “Building backend applications with it instead of CLI applications, like Lerdorf intended.”
But also
"\n"
because it’s easier andPHP_EOL
is just an alias for"\n"
; it’s not even platform-dependent.PHP_EOL depends on your host system, it’s
\r\n
on Windows.I don’t really want to use what Lerdorf intended, PHP <= 4 was horrible, 5.x was mainly getting slowly rid of nonsense and with 7.x PHP started its slow path of redemption and entered its modern era.
While Lerdorf’s vision was great at that time for its intended use case, I wouldn’t want to build anything serious in it.
It actually outputs
"\n"
on a Windows system, but modern Windows to recognise that as enough of a newline, nowadays.I don’t really want to use what Lerdorf intended, PHP <= 4 was horrible
Actually a great point!
Maybe c# has similar. There’s \r\n or \n like c++ and Environment.NewLine.
Probably it’s similar in that Environment.NewLine takes into account the operating system in use and I wonder if endl in c++ does the same thing?
C# also has verbatim strings, in which you can just put a literal newline.
string foo = @"This string has a line break!";
Just
puts(“I’m a teapot”);
:)C++ style text streams are bad and a dead-end design and
'\n'
.Wasn’t this {fmt} library merged into STL now? Does this solve this issue?
Anyways, there was also a constant that is the OS line ending without a flush, right?