所以我正在学习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'
字符,但需要额外的<<
运算符。有没有办法衡量哪一个最终更好?我意识到我在这里分裂,但是我没有个性能让我在没有答案的情况下克服这些简单的事情。
在一个可能包含数千种这类线路的程序中,如果它存在,我想保存那段CPU时间。感谢。
答案 0 :(得分:1)
你应该使用第一个。第二个需要额外的函数调用。更重要的是,我认为打字也更自然。
答案 1 :(得分:1)
如果您认为
cout << "I am " << age << " years old." << '\n';
可能会更好,那为什么要停在那里?通过扩展,这反过来会更好:
cout << "I am " << age << " years old" << '.' << '\n';
依旧......
cout << "I am " << age << " years ol" << 'd' << '.' << '\n'; // etc...
坚持使用原始的纯字符串。