"\n" vs '\n' 效率
"\n" vs '\n' efficiency
所以我正在学习 C++,我很清楚我患有过早优化综合症,但我觉得代码是世界上为数不多的可以最实际地追求完美的东西之一,所以我'我正在尝试最大限度地提高性能和效率,并开发绝对最佳实践。
所以有三种方法(我目前知道)做换行:
cout << "Hello, World." << endl;
cout << "Hello, World." << "\n";
cout << "Hello, World." << '\n';
尽管几乎所有初学者 C++ 书籍都在早期使用它,但我自己的研究表明 endl
应该避免,除非你知道你必须 "clear the buffer." 我对 "buffer" 甚至在这一点上几乎是无关紧要的。
因此在大多数情况下将范围缩小到 "\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 的一小部分时间(如果存在的话)。谢谢。
你应该使用第一个。第二个需要额外的函数调用。更重要的是,我认为它在打字方面也更自然。
如果你认为
cout << "I am " << age << " years old." << '\n';
可能会更好,那为什么要停在那里呢?通过扩展,这反过来会更好:
cout << "I am " << age << " years old" << '.' << '\n';
等等...
cout << "I am " << age << " years ol" << 'd' << '.' << '\n'; // etc...
坚持原来的纯字符串就好
所以我正在学习 C++,我很清楚我患有过早优化综合症,但我觉得代码是世界上为数不多的可以最实际地追求完美的东西之一,所以我'我正在尝试最大限度地提高性能和效率,并开发绝对最佳实践。
所以有三种方法(我目前知道)做换行:
cout << "Hello, World." << endl;
cout << "Hello, World." << "\n";
cout << "Hello, World." << '\n';
尽管几乎所有初学者 C++ 书籍都在早期使用它,但我自己的研究表明 endl
应该避免,除非你知道你必须 "clear the buffer." 我对 "buffer" 甚至在这一点上几乎是无关紧要的。
因此在大多数情况下将范围缩小到 "\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 的一小部分时间(如果存在的话)。谢谢。
你应该使用第一个。第二个需要额外的函数调用。更重要的是,我认为它在打字方面也更自然。
如果你认为
cout << "I am " << age << " years old." << '\n';
可能会更好,那为什么要停在那里呢?通过扩展,这反过来会更好:
cout << "I am " << age << " years old" << '.' << '\n';
等等...
cout << "I am " << age << " years ol" << 'd' << '.' << '\n'; // etc...
坚持原来的纯字符串就好