summaryrefslogtreecommitdiff
path: root/doc/stringio/putc.rdoc
blob: 4636ffa0db8b34ab65a152f9508b89b309b6d9c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Replaces one or more bytes at position +pos+
with bytes of the given argument;
advances the position by the count of bytes written;
returns the argument.

\StringIO object for 1-byte characters.

  strio = StringIO.new('foo')
  strio.pos # => 0

With 1-byte argument, replaces one byte:

  strio.putc('b')
  strio.string    # => "boo"
  strio.pos       # => 1
  strio.putc('a') # => "a"
  strio.string    # => "bao"
  strio.pos       # => 2
  strio.putc('r') # => "r"
  strio.string    # => "bar"
  strio.pos       # => 3
  strio.putc('n') # => "n"
  strio.string    # => "barn"
  strio.pos       # => 4

Fills with null characters if necessary:

  strio.pos = 6
  strio.putc('x') # => "x"
  strio.string    # => "barn\u0000\u0000x"
  strio.pos       # => 7

With integer argument, replaces one byte with the low-order byte of the integer:

  strio = StringIO.new('foo')
  strio.putc(70)
  strio.string # => "Foo"
  strio.putc(79)
  strio.string # => "FOo"
  strio.putc(79 + 1024)
  strio.string # => "FOO"

\StringIO object for Multi-byte characters:

  greek = 'αβγδε' # Five 2-byte characters.
  strio = StringIO.new(greek)
  strio.string# => "αβγδε"
  strio.string.b        # => "\xCE\xB1\xCE\xB2\xCE\xB3\xCE\xB4\xCE\xB5"
  strio.string.bytesize # => 10
  strio.string.chars    # => ["α", "β", "γ", "δ", "ε"]
  strio.string.size     # => 5

With 1-byte argument, replaces one byte of the string:

  strio.putc(' ')       # 1-byte ascii space.
  strio.pos             # => 1
  strio.string          # => " \xB1βγδε"
  strio.string.b        # => " \xB1\xCE\xB2\xCE\xB3\xCE\xB4\xCE\xB5"
  strio.string.bytesize # => 10
  strio.string.chars    # => [" ", "\xB1", "β", "γ", "δ", "ε"]
  strio.string.size     # => 6

  strio.putc(' ')
  strio.pos             # => 2
  strio.string          # => "  βγδε"
  strio.string.b        # => "  \xCE\xB2\xCE\xB3\xCE\xB4\xCE\xB5"
  strio.string.bytesize # => 10
  strio.string.chars    # => [" ", " ", "β", "γ", "δ", "ε"]
  strio.string.size     # => 6

With 2-byte argument, replaces two bytes of the string:

  strio.rewind
  strio.putc('α')
  strio.pos             # => 2
  strio.string          # => "αβγδε"
  strio.string.b        # => "\xCE\xB1\xCE\xB2\xCE\xB3\xCE\xB4\xCE\xB5"
  strio.string.bytesize # => 10
  strio.string.chars    # => ["α", "β", "γ", "δ", "ε"]
  strio.string.size     # => 5

Related: #getc, #ungetc.