Talk:String (C++)
From Wikipedia, the free encyclopedia
[edit] mem usage?
I just had a young programmer tell me that an uninitialized std::string uses less memory than an initialized one. Is that true? (I guess that would depend on the implementation; but consider, for example gcc) The code I found suspect was:
class blah { private: std:string name; public: blah (std:string in) { if (!in.empty()) name = in; // claimed savings of memory } };
linas (talk) 03:31, 27 January 2008 (UTC)
- That sounds bogus to me. Even if you don't touch
name
, it gets initialized at the beginning of the constructor. You can always look at the source, though. —Ben FrantzDale (talk) 06:10, 27 January 2008 (UTC)
[edit] null characters
just curious if string class accepts null characters. I would assume it does. —Preceding unsigned comment added by 66.102.196.17 (talk) 00:56, 28 February 2008 (UTC)
- I dug around in the gcc header files and found the following in basic_string.h: 1. String really contains _M_length + 1 characters: due to 21.3.4 must be kept null-terminated. But I am still not sure what that means fully. Guess I will have to test it. Kind of a lot to go through for a curiosity. I am starting to think it would have to be possible though, or how else would someone do binary file i/o. —Preceding unsigned comment added by 66.102.196.44 (talk) 03:03, 7 March 2008 (UTC)
- It appears to. It's not easy to add them, though, because
string foo = "asdf\0asdf";
just sets foo to "asdf" because the null terminator means the string constructor never sees the second half of the string. But you can dostr.push_back('\0')
and the length will increase and you can put non-null characters after the null terminator. —Ben FrantzDale (talk) 03:19, 8 March 2008 (UTC)