Hacker News new | ask | show | jobs
by direwolf20 137 days ago
It's a class, so it doesn't work in C.
1 comments

Sure, but you can have a similar string abstraction in C. What would you miss? The overloaded operators?
Automatic memory accounting — construct/copy/destruct. You can't abstract these in C. You always have to call i_copied_the_string(&string) after copying the string and you always have to call the_string_is_out_of_scope_now(&string) just before it goes out of scope
This seems orthogonal to std::string. People who pick C do not want automatic memory management, but might want better strings.
Automatic memory management is literally what makes them better
For many string operations such as appending, inserting, overwriting etc. the memory management can be made automatic as well in C, and I think this is the main advantage. Just automatic free at scope end does not work (without extensions).
You can make strings (or bignums or matrices) more convenient than the C default but you can never make them as convenient as ints, while in C++ you can.