Re: Why do Glib::ustring::operator[] and at() return values, not references?
- From: Chris Vine <vine35792468 gmail com>
- To: gtkmm-list gnome org
- Subject: Re: Why do Glib::ustring::operator[] and at() return values, not references?
- Date: Sat, 24 Jun 2017 19:08:36 +0100
On Sat, 24 Jun 2017 15:51:49 +0100
Daniel Boles <dboles src gmail com> wrote:
Title says it all really. I had to use an std::string in one place
because I needed to modify it quickly and with less hassle than
using .replace() - and Glib::ustring won't let me get a reference to
perform such modification.
The documentation states
"No reference return; use replace()
<https://developer.gnome.org/glibmm/stable/classGlib_1_1ustring.html#a0f0c9b5aaad58279d3ac87a86a173f4a>
to write characters."
but does not explain why, nor does the commit log: these comments were
added way back in the initial revision.
So I'm wondering whether there's really a reason for this, or if it
is just something that no one has wanted to change (until now!)
It is because UTF-8 is a multibyte encoding, and any one character may
require between 1 and 5 bytes to represent it. If you were allowed to
change a byte at will you would be able to introduce invalid encoding
sequences. As to the absense of documentation, maybe it is because this
was thought to be self-evident, dunno.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]