Как вы строите std :: string со встроенным нулем? - PullRequest
79 голосов
/ 02 октября 2008

Если я хочу создать std :: string с такой строкой, как:

std::string my_string("a\0b");

Если я хочу, чтобы в результирующей строке было три символа (a, null, b), я получаю только один. Какой правильный синтаксис?

Ответы [ 11 ]

0 голосов
/ 02 октября 2008

Почти все реализации std :: strings заканчиваются нулем, поэтому вам, вероятно, не следует этого делать. Обратите внимание, что «a \ 0b» на самом деле имеет длину четыре символа из-за автоматического нулевого терминатора (a, null, b, null). Если вы действительно хотите сделать это и разорвать контракт std :: string, вы можете сделать:

std::string s("aab");
s.at(1) = '\0';

но если вы это сделаете, все ваши друзья будут смеяться над вами, вы никогда не найдете истинного счастья.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...