Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
src_corelib_text_qbytearray.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
4#include <QByteArray>
5#include <QDataStream>
6#include <QIODevice>
7#include <iostream>
8
9using namespace std;
10
12{
13 {
14 //! [0]
15 QByteArray ba("Hello");
16 //! [0]
17 }
18
19 {
20 //! [1]
21 QByteArray ba;
22 ba.resize(5);
23 ba[0] = 0x3c;
24 ba[1] = 0xb8;
25 ba[2] = 0x64;
26 ba[3] = 0x18;
27 ba[4] = 0xca;
28 //! [1]
29 }
30
31 {
32 QByteArray ba("");
33
34 //! [2]
35 for (qsizetype i = 0; i < ba.size(); ++i) {
36 if (ba.at(i) >= 'a' && ba.at(i) <= 'f')
37 cout << "Found character in range [a-f]" << endl;
38 }
39 //! [2]
40 }
41
42 {
43 //! [3]
44 QByteArray x("and");
45 x.prepend("rock "); // x == "rock and"
46 x.append(" roll"); // x == "rock and roll"
47 x.replace(5, 3, "&"); // x == "rock & roll"
48 //! [3]
49 }
50
51 {
52 //! [4]
53 QByteArray ba("We must be <b>bold</b>, very <b>bold</b>");
54 qsizetype j = 0;
55 while ((j = ba.indexOf("<b>", j)) != -1) {
56 cout << "Found <b> tag at index position " << j << endl;
57 ++j;
58 }
59 //! [4]
60 }
61
62 {
63 //! [5]
64 QByteArray().isNull(); // returns true
65 QByteArray().isEmpty(); // returns true
66
67 QByteArray("").isNull(); // returns false
68 QByteArray("").isEmpty(); // returns true
69
70 QByteArray("abc").isNull(); // returns false
71 QByteArray("abc").isEmpty(); // returns false
72 //! [5]
73 }
74
75 {
76 //! [6]
77 QByteArray ba("Hello");
78 qsizetype n = ba.size(); // n == 5
79 ba.data()[0]; // returns 'H'
80 ba.data()[4]; // returns 'o'
81 ba.data()[5]; // returns '\0'
82 //! [6]
83 }
84
85 {
86 //! [7]
87 QByteArray().isEmpty(); // returns true
88 QByteArray("").isEmpty(); // returns true
89 QByteArray("abc").isEmpty(); // returns false
90 //! [7]
91 }
92
93 {
94 //! [8]
95 QByteArray ba("Hello world");
96 char *data = ba.data();
97 while (*data) {
98 cout << "[" << *data << "]" << endl;
99 ++data;
100 }
101 //! [8]
102 }
103
104 {
105 //! [9]
106 QByteArray ba("Hello, world");
107 cout << ba[0]; // prints H
108 ba[7] = 'W';
109 // ba == "Hello, World"
110 //! [9]
111 }
112
113 {
114 //! [10]
115 QByteArray ba("Stockholm");
116 ba.truncate(5); // ba == "Stock"
117 //! [10]
118 }
119
120 {
121 //! [11]
122 QByteArray ba("STARTTLS\r\n");
123 ba.chop(2); // ba == "STARTTLS"
124 //! [11]
125 }
126
127 {
128 //! [12]
129 QByteArray x("free");
130 QByteArray y("dom");
131 x += y;
132 // x == "freedom"
133 //! [12]
134 }
135
136 {
137 //! [13]
138 QByteArray().isNull(); // returns true
139 QByteArray("").isNull(); // returns false
140 QByteArray("abc").isNull(); // returns false
141 //! [13]
142 }
143
144 {
145 //! [14]
146 QByteArray ba("Istambul");
147 ba.fill('o');
148 // ba == "oooooooo"
149
150 ba.fill('X', 2);
151 // ba == "XX"
152 //! [14]
153 }
154
155 {
156 //! [15]
157 QByteArray x("ship");
158 QByteArray y("air");
159 x.prepend(y);
160 // x == "airship"
161 //! [15]
162 }
163
164 {
165 //! [16]
166 QByteArray x("free");
167 QByteArray y("dom");
168 x.append(y);
169 // x == "freedom"
170 //! [16]
171 }
172
173 {
174 //! [17]
175 QByteArray ba("Meal");
176 ba.insert(1, QByteArrayView("ontr"));
177 // ba == "Montreal"
178 //! [17]
179 }
180
181 {
182 //! [18]
183 QByteArray ba("Montreal");
184 ba.remove(1, 4);
185 // ba == "Meal"
186 //! [18]
187 }
188
189 {
190 //! [19]
191 QByteArray x("Say yes!");
192 QByteArray y("no");
193 x.replace(4, 3, y);
194 // x == "Say no!"
195 //! [19]
196 }
197
198 {
199 //! [20]
200 QByteArray ba("colour behaviour flavour neighbour");
201 ba.replace(QByteArray("ou"), QByteArray("o"));
202 // ba == "color behavior flavor neighbor"
203 //! [20]
204 }
205
206 {
207 //! [21]
208 QByteArray x("sticky question");
209 QByteArrayView y("sti");
210 x.indexOf(y); // returns 0
211 x.indexOf(y, 1); // returns 10
212 x.indexOf(y, 10); // returns 10
213 x.indexOf(y, 11); // returns -1
214 //! [21]
215 }
216
217 {
218 //! [22]
219 QByteArray ba("ABCBA");
220 ba.indexOf("B"); // returns 1
221 ba.indexOf("B", 1); // returns 1
222 ba.indexOf("B", 2); // returns 3
223 ba.indexOf("X"); // returns -1
224 //! [22]
225 }
226
227 {
228 //! [23]
229 QByteArray x("crazy azimuths");
230 QByteArrayView y("az");
231 x.lastIndexOf(y); // returns 6
232 x.lastIndexOf(y, 6); // returns 6
233 x.lastIndexOf(y, 5); // returns 2
234 x.lastIndexOf(y, 1); // returns -1
235 //! [23]
236 }
237
238 {
239 //! [24]
240 QByteArray ba("ABCBA");
241 ba.lastIndexOf("B"); // returns 3
242 ba.lastIndexOf("B", 3); // returns 3
243 ba.lastIndexOf("B", 2); // returns 1
244 ba.lastIndexOf("X"); // returns -1
245 //! [24]
246 }
247
248 {
249 //! [25]
250 QByteArray url("ftp://ftp.qt-project.org/");
251 if (url.startsWith("ftp:"))
252 {/*...*/}
253 //! [25]
254 }
255
256 {
257 //! [26]
258 QByteArray url("http://qt-project.org/doc/qt-5.0/qtdoc/index.html");
259 if (url.endsWith(".html"))
260 {/*...*/}
261 //! [26]
262 }
263
264 {
265 //! [27]
266 QByteArray x("Pineapple");
267 QByteArray y = x.first(4);
268 // y == "Pine"
269 //! [27]
270 }
271
272 {
273 //! [28]
274 QByteArray x("Pineapple");
275 QByteArray y = x.last(5);
276 // y == "apple"
277 //! [28]
278 }
279
280 {
281 //! [29]
282 QByteArray x("Five pineapples");
283 QByteArray y = x.sliced(5, 4); // y == "pine"
284 QByteArray z = x.sliced(5); // z == "pineapples"
285 //! [29]
286 }
287
288 {
289 //! [30]
290 QByteArray x("Qt by THE QT COMPANY");
291 QByteArray y = x.toLower();
292 // y == "qt by the qt company"
293 //! [30]
294 }
295
296 {
297 //! [31]
298 QByteArray x("Qt by THE QT COMPANY");
299 QByteArray y = x.toUpper();
300 // y == "QT BY THE QT COMPANY"
301 //! [31]
302 }
303
304 {
305 //! [32]
306 QByteArray ba(" lots\t of\nwhitespace\r\n ");
307 ba = ba.simplified();
308 // ba == "lots of whitespace";
309 //! [32]
310 }
311
312 {
313 //! [33]
314 QByteArray ba(" lots\t of\nwhitespace\r\n ");
315 ba = ba.trimmed();
316 // ba == "lots\t of\nwhitespace";
317 //! [33]
318 }
319
320 {
321 //! [34]
322 QByteArray x("apple");
323 QByteArray y = x.leftJustified(8, '.'); // y == "apple..."
324 //! [34]
325 }
326
327 {
328 //! [35]
329 QByteArray x("apple");
330 QByteArray y = x.rightJustified(8, '.'); // y == "...apple"
331 //! [35]
332 }
333
334 {
335 //! [36]
336 QByteArray str("FF");
337 bool ok;
338 int hex = str.toInt(&ok, 16); // hex == 255, ok == true
339 int dec = str.toInt(&ok, 10); // dec == 0, ok == false
340 //! [36]
341 }
342
343 {
344 //! [37]
345 QByteArray str("FF");
346 bool ok;
347 long hex = str.toLong(&ok, 16); // hex == 255, ok == true
348 long dec = str.toLong(&ok, 10); // dec == 0, ok == false
349 //! [37]
350 }
351
352 {
353 //! [38]
354 QByteArray string("1234.56");
355 bool ok;
356 double a = string.toDouble(&ok); // a == 1234.56, ok == true
357
358 string = "1234.56 Volt";
359 a = string.toDouble(&ok); // a == 0, ok == false
360 //! [38]
361 }
362
363 {
364 //! [38float]
365 QByteArray string("1234.56");
366 bool ok;
367 float a = string.toFloat(&ok); // a == 1234.56, ok == true
368
369 string = "1234.56 Volt";
370 a = string.toFloat(&ok); // a == 0, ok == false
371 //! [38float]
372 }
373
374 {
375 //! [39]
376 QByteArray text("Qt is great!");
377 text.toBase64(); // returns "UXQgaXMgZ3JlYXQh"
378
379 QByteArray hello("<p>Hello?</p>");
380 hello.toBase64(QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals); // returns "PHA+SGVsbG8/PC9wPg"
381 hello.toBase64(QByteArray::Base64Encoding); // returns "PHA+SGVsbG8/PC9wPg=="
382 hello.toBase64(QByteArray::Base64UrlEncoding); // returns "PHA-SGVsbG8_PC9wPg=="
383 hello.toBase64(QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); // returns "PHA-SGVsbG8_PC9wPg"
384 //! [39]
385 }
386
387 {
388 //! [40]
389 QByteArray ba;
390 int n = 63;
391 ba.setNum(n); // ba == "63"
392 ba.setNum(n, 16); // ba == "3f"
393 //! [40]
394 }
395
396 {
397 //! [41]
398 int n = 63;
399 QByteArray::number(n); // returns "63"
400 QByteArray::number(n, 16); // returns "3f"
401 QByteArray::number(n, 16).toUpper(); // returns "3F"
402 //! [41]
403 }
404
405 {
406 //! [42]
407 QByteArray ba = QByteArray::number(12.3456, 'E', 3);
408 // ba == 1.235E+01
409 //! [42]
410 }
411
412 {
413 //! [43]
414 static const char mydata[] = {
415 '\x00', '\x00', '\x03', '\x84', '\x78', '\x9c', '\x3b', '\x76',
416 '\xec', '\x18', '\xc3', '\x31', '\x0a', '\xf1', '\xcc', '\x99',
417 //...
418 '\x6d', '\x5b'
419 };
420
421 QByteArray data = QByteArray::fromRawData(mydata, sizeof(mydata));
422 QDataStream in(&data, QIODevice::ReadOnly);
423 //...
424 //! [43]
425 }
426
427 {
428 //! [44]
429 QByteArray text = QByteArray::fromBase64("UXQgaXMgZ3JlYXQh");
430 text.data(); // returns "Qt is great!"
431
432 QByteArray::fromBase64("PHA+SGVsbG8/PC9wPg==", QByteArray::Base64Encoding); // returns "<p>Hello?</p>"
433 QByteArray::fromBase64("PHA-SGVsbG8_PC9wPg==", QByteArray::Base64UrlEncoding); // returns "<p>Hello?</p>"
434 //! [44]
435 }
436
437 QByteArray encodedData;
438
439 {
440 //! [44ter]
441 void process(const QByteArray &);
442
443 if (auto result = QByteArray::fromBase64Encoding(encodedData))
444 process(*result);
445 //! [44ter]
446
447 //! [44quater]
448 auto result = QByteArray::fromBase64Encoding(encodedData);
449 if (result.decodingStatus == QByteArray::Base64DecodingStatus::Ok)
450 process(result.decoded);
451 //! [44quater]
452 }
453
454 {
455 //! [45]
456 QByteArray text = QByteArray::fromHex("517420697320677265617421");
457 text.data(); // returns "Qt is great!"
458 //! [45]
459 }
460
461 {
462 //! [46]
463 QString tmp = "test";
464 QByteArray text = tmp.toLocal8Bit();
465 char *data = new char[text.size()];
466 strcpy(data, text.data());
467 delete [] data;
468 //! [46]
469 }
470
471 {
472 //! [47]
473 QString tmp = "test";
474 QByteArray text = tmp.toLocal8Bit();
475 char *data = new char[text.size() + 1];
476 strcpy(data, text.data());
477 delete [] data;
478 //! [47]
479 }
480
481 {
482 //! [48]
483 QByteArray ba1("ca\0r\0t");
484 ba1.size(); // Returns 2.
485 ba1.constData(); // Returns "ca" with terminating \0.
486
487 QByteArray ba2("ca\0r\0t", 3);
488 ba2.size(); // Returns 3.
489 ba2.constData(); // Returns "ca\0" with terminating \0.
490
491 QByteArray ba3("ca\0r\0t", 4);
492 ba3.size(); // Returns 4.
493 ba3.constData(); // Returns "ca\0r" with terminating \0.
494
495 const char cart[] = {'c', 'a', '\0', 'r', '\0', 't'};
496 QByteArray ba4(QByteArray::fromRawData(cart, 6));
497 ba4.size(); // Returns 6.
498 ba4.constData(); // Returns "ca\0r\0t" without terminating \0.
499 //! [48]
500 }
501
502 {
503 //! [49]
504 QByteArray ba("ab");
505 ba.repeated(4); // returns "abababab"
506 //! [49]
507 }
508
509 {
510 //! [50]
511 QByteArray macAddress = QByteArray::fromHex("123456abcdef");
512 macAddress.toHex(':'); // returns "12:34:56:ab:cd:ef"
513 macAddress.toHex(0); // returns "123456abcdef"
514 //! [50]
515 }
516
517 {
518 //! [51]
519 QByteArray text = QByteArray::fromPercentEncoding("Qt%20is%20great%33");
520 qDebug("%s", text.data()); // reports "Qt is great!"
521 //! [51]
522 }
523
524 {
525 //! [52]
526 QByteArray text = "{a fishy string?}";
527 QByteArray ba = text.toPercentEncoding("{}", "s");
528 qDebug("%s", ba.constData());
529 // prints "{a fi%73hy %73tring%3F}"
530 //! [52]
531 }
532
533 {
534 //! [53]
535 QByteArray ba = QByteArrayLiteral("byte array contents");
536 //! [53]
537 }
538
539 {
540 //! [54]
541 QByteArray encoded("Qt%20is%20great%33");
542 QByteArray decoded = encoded.percentDecoded(); // Set to "Qt is great!"
543 //! [54]
544 }
545
546 using namespace Qt::StringLiterals;
547
548 {
549 //! [57]
550 QByteArray x = "Five pineapples"_ba;
551 x.slice(5); // x == "pineapples"
552 x.slice(4, 3); // x == "app"
553 //! [57]
554 }
555
556}
557
558# ifdef EMSCRIPTEN
559#include <emscripten/val.h>
560void emscripten_examples()
561{
562 {
563 //! [55]
564 emscripten::val uint8array = emscripten::val::global("g_uint8array");
565 QByteArray byteArray = QByteArray::fromEcmaUint8Array(uint8array);
566 //! [55]
567 }
568 {
569 //! [56]
570 QByteArray byteArray = "test";
571 emscripten::val uint8array = byteArray.toEcmaUint8Array();
572 //! [56]
573 }
574}
575# endif
void process(const QChar &ch)
void wrapInFunction()
[16]