gpt4 book ai didi

c++ - "\n"与 '\n' 效率

转载 作者:行者123 更新时间:2023-11-28 00:10:05 25 4
gpt4 key购买 nike

所以我正在学习 C++,我很清楚我患有过早优化综合症,但我觉得代码是世界上为数不多的可以最实际地追求完美的东西之一,所以我正在尝试在这里最大限度地提高性能和效率,并制定绝对最佳实践。

所以有三种方法(我目前知道)做换行:

cout << "Hello, World." << endl;
cout << "Hello, World." << "\n";
cout << "Hello, World." << '\n';

尽管几乎所有初学者 C++ 书籍都在早期使用它,但我自己的研究表明 endl应该避免,除非你知道你必须“清除缓冲区”。在这一点上,我对“缓冲区”是什么的理解几乎无关紧要。

因此将范围缩小到 "\n"'\n'对于大多数情况。然后我收集了"\n"被读取为两个单独的字符并转换为一个字符。这清楚地表明在将变量发送到对象(如 cout)后输入换行符的情况下使用什么。 :

int age = 25;
cout << "age = " << age << '\n'; // more efficient
cout << "age = " << age << "\n";

我的主要问题 - 当您以字符串结束语句时,哪种情况更好?

int age = 25;
cout << "I am " << age << " years old.\n";
cout << "I am " << age << " years old." << '\n';

一个在字符串中包含\n 转义字符,但包含一个额外的字符。另一个有单'\n'字符,但需要额外的 <<运算符(operator)。有什么方法可以衡量哪一个最终更好?我意识到我在这里 split 头发,但我没有个性可以让我在没有答案的情况下克服这些简单的事情。

在一个可能包含数千行此类行的程序中,我想节省那部分 CPU 时间(如果存在的话)。谢谢。

最佳答案

如果你认为

cout << "I am " << age << " years old." << '\n';

可能会更好,那为什么要停在那里呢?通过扩展,这反过来会更好:

cout << "I am " << age << " years old" << '.' << '\n';

等等……

cout << "I am " << age << " years ol" << 'd' << '.' << '\n'; // etc...

就坚持原来的纯字符串吧。

关于c++ - "\n"与 '\n' 效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33615047/

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