3 ms·
I use constexpr char[] for string literal constants just because it's a little more compatible. Some things can't take string_view.
by hot_gril 3y ago
I use constexpr char[] for string literal constants just because it's a little more compatible. Some things can't take string_view.
- criddell 3y agoWhy not use a std::array? Otherwise won't you a second variable for the string length?
- hot_gril 3y ago`constexpr char kFoo[] = "bar"`, then kFoo can be used like an std::string and passed into things that take const std::string& or string_view. The length is part of that. Or is that actually doing a copy?
- vitus 3y agoFor both const std::string& and std::string_view, you're (potentially) incurring a runtime invocation of strlen. For const std::string&, you're further incurring a copy in order to create a temporary std::string.
- hot_gril 3y agoWhoops. As you can maybe tell, the stuff I use C++ for isn't so much about performance.
- criddell 3y agoI think you still need the length though unless you can guarantee the string will never have any nulls in it. In Windows, there are API calls that take strings with embedded nulls (and that are typically terminated with a two nulls in a row). So you might need to deal with a string that looks like "foo\0bar\0\0".