From Jason Turner

[c.strings]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp9c4ft16i/{from.md → to.md} +29 -12
tmp/tmp9c4ft16i/{from.md → to.md} RENAMED
@@ -180,11 +180,11 @@ namespace std {
180
  wchar_t* wcstok(wchar_t* s1, const wchar_t* s2, wchar_t** ptr);
181
  const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); // see [library.c]
182
  wchar_t* wmemchr(wchar_t* s, wchar_t c, size_t n); // see [library.c]
183
  size_t wcslen(const wchar_t* s);
184
  wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
185
- size_t wcsftime(wchar_t* s, size_t maxsize, const wchar_t* format, const struct tm* timeptr);
186
  wint_t btowc(int c);
187
  int wctob(wint_t c);
188
 
189
  // [c.mb.wcs], multibyte / wide string and character conversion functions
190
  int mbsinit(const mbstate_t* ps);
@@ -295,22 +295,24 @@ next multibyte character is complete and valid, it determines the values
295
  of the corresponding UTF-8 code units and then, if `pc8` is not a null
296
  pointer, stores the value of the first (or only) such code unit in the
297
  object pointed to by `pc8`. Subsequent calls will store successive UTF-8
298
  code units without consuming any additional input until all the code
299
  units have been stored. If the corresponding Unicode character is
300
- U+0000, the resulting state described is the initial conversion state.
 
301
 
302
  *Returns:* The first of the following that applies (given the current
303
  conversion state):
304
 
305
  - `0`, if the next `n` or fewer bytes complete the multibyte character
306
- that corresponds to the U+0000 Unicode character (which is the value
307
- stored).
308
  - between `1` and `n` (inclusive), if the next n or fewer bytes complete
309
- a valid multibyte character (which is the value stored); the value
310
- returned is the number of bytes that complete the multibyte character.
311
- - `(size_t)(-3)`, if the next character resulting from a previous call
 
312
  has been stored (no bytes from the input have been consumed by this
313
  call).
314
  - `(size_t)(-2)`, if the next `n` bytes contribute to an incomplete (but
315
  potentially valid) multibyte character, and all `n` bytes have been
316
  processed (no value is stored).
@@ -343,62 +345,69 @@ conversion state is unspecified.
343
  *Remarks:* Calls to `c8rtomb` with a null pointer argument for `s` may
344
  introduce a data race [[res.on.data.races]] with other calls to
345
  `c8rtomb` with a null pointer argument for `s`.
346
 
347
  <!-- Link reference definitions -->
 
348
  [basic.string]: #basic.string
 
349
  [basic.string.hash]: #basic.string.hash
350
  [basic.string.literals]: #basic.string.literals
351
- [basic.types]: basic.md#basic.types
352
  [c.mb.wcs]: #c.mb.wcs
353
  [c.strings]: #c.strings
354
  [cctype.syn]: #cctype.syn
355
  [char.traits]: #char.traits
 
356
  [char.traits.req]: #char.traits.req
357
  [char.traits.require]: #char.traits.require
358
  [char.traits.specializations]: #char.traits.specializations
359
  [char.traits.specializations.char]: #char.traits.specializations.char
360
  [char.traits.specializations.char16.t]: #char.traits.specializations.char16.t
361
  [char.traits.specializations.char32.t]: #char.traits.specializations.char32.t
362
  [char.traits.specializations.char8.t]: #char.traits.specializations.char8.t
 
363
  [char.traits.specializations.wchar.t]: #char.traits.specializations.wchar.t
364
  [char.traits.typedefs]: #char.traits.typedefs
 
 
365
  [container.requirements]: containers.md#container.requirements
366
  [container.requirements.general]: containers.md#container.requirements.general
367
- [container.seq.req]: containers.md#container.seq.req
368
  [cpp17.copyassignable]: #cpp17.copyassignable
369
  [cpp17.copyconstructible]: #cpp17.copyconstructible
370
  [cpp17.defaultconstructible]: #cpp17.defaultconstructible
371
  [cpp17.destructible]: #cpp17.destructible
372
  [cstring.syn]: #cstring.syn
373
  [cuchar.syn]: #cuchar.syn
374
  [cwchar.syn]: #cwchar.syn
375
  [cwctype.syn]: #cwctype.syn
376
- [defns.character.container]: library.md#defns.character.container
377
  [input.output]: input.md#input.output
378
  [intro.object]: basic.md#intro.object
379
- [iostate.flags]: input.md#iostate.flags
380
  [iostream.forward]: input.md#iostream.forward
381
  [iostreams.limits.pos]: input.md#iostreams.limits.pos
382
  [istream.formatted.reqmts]: input.md#istream.formatted.reqmts
383
  [istream.unformatted]: input.md#istream.unformatted
384
  [iterator.concept.contiguous]: iterators.md#iterator.concept.contiguous
 
385
  [iterator.range]: iterators.md#iterator.range
386
  [iterator.requirements.general]: iterators.md#iterator.requirements.general
387
  [library.c]: library.md#library.c
388
  [ostream.formatted.reqmts]: input.md#ostream.formatted.reqmts
389
  [random.access.iterators]: iterators.md#random.access.iterators
390
  [res.on.data.races]: library.md#res.on.data.races
 
391
  [string.access]: #string.access
392
  [string.accessors]: #string.accessors
393
  [string.append]: #string.append
394
  [string.assign]: #string.assign
395
  [string.capacity]: #string.capacity
396
  [string.classes]: #string.classes
 
397
  [string.cmp]: #string.cmp
398
  [string.compare]: #string.compare
399
  [string.cons]: #string.cons
 
400
  [string.conversions]: #string.conversions
401
  [string.copy]: #string.copy
402
  [string.ends.with]: #string.ends.with
403
  [string.erase]: #string.erase
404
  [string.erasure]: #string.erasure
@@ -425,26 +434,34 @@ introduce a data race [[res.on.data.races]] with other calls to
425
  [string.view.comparison]: #string.view.comparison
426
  [string.view.comparison.overloads]: #string.view.comparison.overloads
427
  [string.view.cons]: #string.view.cons
428
  [string.view.deduct]: #string.view.deduct
429
  [string.view.find]: #string.view.find
 
430
  [string.view.hash]: #string.view.hash
431
  [string.view.io]: #string.view.io
432
  [string.view.iterators]: #string.view.iterators
433
  [string.view.literals]: #string.view.literals
434
  [string.view.modifiers]: #string.view.modifiers
435
  [string.view.ops]: #string.view.ops
436
  [string.view.synop]: #string.view.synop
437
  [string.view.template]: #string.view.template
 
438
  [strings]: #strings
439
  [strings.general]: #strings.general
440
  [strings.summary]: #strings.summary
441
  [support.signal]: support.md#support.signal
 
 
 
442
  [unord.hash]: utilities.md#unord.hash
443
  [utility.swap]: utilities.md#utility.swap
444
 
445
  [^1]: If `eof()` can be held in `char_type` then some iostreams
446
  operations can give surprising results.
447
 
448
- [^2]: For example, as an argument to non-member functions `swap()`
 
 
 
449
  [[string.special]], `operator>{}>()` [[string.io]], and `getline()`
450
  [[string.io]], or as an argument to `basic_string::swap()`.
 
180
  wchar_t* wcstok(wchar_t* s1, const wchar_t* s2, wchar_t** ptr);
181
  const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); // see [library.c]
182
  wchar_t* wmemchr(wchar_t* s, wchar_t c, size_t n); // see [library.c]
183
  size_t wcslen(const wchar_t* s);
184
  wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
185
+ size_t wcsftime(wchar_t* s, size_t maxsize, const wchar_t* format, const tm* timeptr);
186
  wint_t btowc(int c);
187
  int wctob(wint_t c);
188
 
189
  // [c.mb.wcs], multibyte / wide string and character conversion functions
190
  int mbsinit(const mbstate_t* ps);
 
295
  of the corresponding UTF-8 code units and then, if `pc8` is not a null
296
  pointer, stores the value of the first (or only) such code unit in the
297
  object pointed to by `pc8`. Subsequent calls will store successive UTF-8
298
  code units without consuming any additional input until all the code
299
  units have been stored. If the corresponding Unicode character is
300
+ U+0000 (null), the resulting state described is the initial conversion
301
+ state.
302
 
303
  *Returns:* The first of the following that applies (given the current
304
  conversion state):
305
 
306
  - `0`, if the next `n` or fewer bytes complete the multibyte character
307
+ that corresponds to the U+0000 (null) Unicode character (which is the
308
+ value stored).
309
  - between `1` and `n` (inclusive), if the next n or fewer bytes complete
310
+ a valid multibyte character (whose first (or only) code unit is
311
+ stored); the value returned is the number of bytes that complete the
312
+ multibyte character.
313
+ - `(size_t)(-3)`, if the next code unit resulting from a previous call
314
  has been stored (no bytes from the input have been consumed by this
315
  call).
316
  - `(size_t)(-2)`, if the next `n` bytes contribute to an incomplete (but
317
  potentially valid) multibyte character, and all `n` bytes have been
318
  processed (no value is stored).
 
345
  *Remarks:* Calls to `c8rtomb` with a null pointer argument for `s` may
346
  introduce a data race [[res.on.data.races]] with other calls to
347
  `c8rtomb` with a null pointer argument for `s`.
348
 
349
  <!-- Link reference definitions -->
350
+ [basic.indet]: basic.md#basic.indet
351
  [basic.string]: #basic.string
352
+ [basic.string.general]: #basic.string.general
353
  [basic.string.hash]: #basic.string.hash
354
  [basic.string.literals]: #basic.string.literals
 
355
  [c.mb.wcs]: #c.mb.wcs
356
  [c.strings]: #c.strings
357
  [cctype.syn]: #cctype.syn
358
  [char.traits]: #char.traits
359
+ [char.traits.general]: #char.traits.general
360
  [char.traits.req]: #char.traits.req
361
  [char.traits.require]: #char.traits.require
362
  [char.traits.specializations]: #char.traits.specializations
363
  [char.traits.specializations.char]: #char.traits.specializations.char
364
  [char.traits.specializations.char16.t]: #char.traits.specializations.char16.t
365
  [char.traits.specializations.char32.t]: #char.traits.specializations.char32.t
366
  [char.traits.specializations.char8.t]: #char.traits.specializations.char8.t
367
+ [char.traits.specializations.general]: #char.traits.specializations.general
368
  [char.traits.specializations.wchar.t]: #char.traits.specializations.wchar.t
369
  [char.traits.typedefs]: #char.traits.typedefs
370
+ [cmp.categories]: support.md#cmp.categories
371
+ [container.reqmts]: containers.md#container.reqmts
372
  [container.requirements]: containers.md#container.requirements
373
  [container.requirements.general]: containers.md#container.requirements.general
 
374
  [cpp17.copyassignable]: #cpp17.copyassignable
375
  [cpp17.copyconstructible]: #cpp17.copyconstructible
376
  [cpp17.defaultconstructible]: #cpp17.defaultconstructible
377
  [cpp17.destructible]: #cpp17.destructible
378
  [cstring.syn]: #cstring.syn
379
  [cuchar.syn]: #cuchar.syn
380
  [cwchar.syn]: #cwchar.syn
381
  [cwctype.syn]: #cwctype.syn
382
+ [defns.character.container]: intro.md#defns.character.container
383
  [input.output]: input.md#input.output
384
  [intro.object]: basic.md#intro.object
 
385
  [iostream.forward]: input.md#iostream.forward
386
  [iostreams.limits.pos]: input.md#iostreams.limits.pos
387
  [istream.formatted.reqmts]: input.md#istream.formatted.reqmts
388
  [istream.unformatted]: input.md#istream.unformatted
389
  [iterator.concept.contiguous]: iterators.md#iterator.concept.contiguous
390
+ [iterator.concept.winc]: iterators.md#iterator.concept.winc
391
  [iterator.range]: iterators.md#iterator.range
392
  [iterator.requirements.general]: iterators.md#iterator.requirements.general
393
  [library.c]: library.md#library.c
394
  [ostream.formatted.reqmts]: input.md#ostream.formatted.reqmts
395
  [random.access.iterators]: iterators.md#random.access.iterators
396
  [res.on.data.races]: library.md#res.on.data.races
397
+ [sequence.reqmts]: containers.md#sequence.reqmts
398
  [string.access]: #string.access
399
  [string.accessors]: #string.accessors
400
  [string.append]: #string.append
401
  [string.assign]: #string.assign
402
  [string.capacity]: #string.capacity
403
  [string.classes]: #string.classes
404
+ [string.classes.general]: #string.classes.general
405
  [string.cmp]: #string.cmp
406
  [string.compare]: #string.compare
407
  [string.cons]: #string.cons
408
+ [string.contains]: #string.contains
409
  [string.conversions]: #string.conversions
410
  [string.copy]: #string.copy
411
  [string.ends.with]: #string.ends.with
412
  [string.erase]: #string.erase
413
  [string.erasure]: #string.erasure
 
434
  [string.view.comparison]: #string.view.comparison
435
  [string.view.comparison.overloads]: #string.view.comparison.overloads
436
  [string.view.cons]: #string.view.cons
437
  [string.view.deduct]: #string.view.deduct
438
  [string.view.find]: #string.view.find
439
+ [string.view.general]: #string.view.general
440
  [string.view.hash]: #string.view.hash
441
  [string.view.io]: #string.view.io
442
  [string.view.iterators]: #string.view.iterators
443
  [string.view.literals]: #string.view.literals
444
  [string.view.modifiers]: #string.view.modifiers
445
  [string.view.ops]: #string.view.ops
446
  [string.view.synop]: #string.view.synop
447
  [string.view.template]: #string.view.template
448
+ [string.view.template.general]: #string.view.template.general
449
  [strings]: #strings
450
  [strings.general]: #strings.general
451
  [strings.summary]: #strings.summary
452
  [support.signal]: support.md#support.signal
453
+ [temp.deduct]: temp.md#temp.deduct
454
+ [term.standard.layout.type]: basic.md#term.standard.layout.type
455
+ [term.trivially.copyable.type]: basic.md#term.trivially.copyable.type
456
  [unord.hash]: utilities.md#unord.hash
457
  [utility.swap]: utilities.md#utility.swap
458
 
459
  [^1]: If `eof()` can be held in `char_type` then some iostreams
460
  operations can give surprising results.
461
 
462
+ [^2]: Because `basic_string_view` refers to a constant sequence,
463
+ `iterator` and `const_iterator` are the same type.
464
+
465
+ [^3]: For example, as an argument to non-member functions `swap()`
466
  [[string.special]], `operator>{}>()` [[string.io]], and `getline()`
467
  [[string.io]], or as an argument to `basic_string::swap()`.