String pada DNA yang terdiri dari basis nitrogenus.
String biner pada (Hyper)cube dengan panjang digit 3
**String** atau disebut juga **untaian** dalam pemrograman komputer adalah sebuah deret simbol. Tipe data string adalah tipe data yang digunakan untuk menyimpan barisan karakter. Sebuah string umumnya dianggap sebagai tipe data dan sering diimplementasi sebagai struktur data *array* bita (atau kata) yang menyimpan urutan elemen, biasanya karakter, menggunakan beberapa pengkodean karakter. *String* juga dapat mendenotasikan array yang lebih umum atau tipe dan struktur data urutan (atau daftar) lainnya.

Ketika sebuah string muncul secara harfiah dalam kode sumber, itu dikenal sebagai string literal atau string anonim.

Dalam bahasa formal, yang digunakan dalam logika matematika dan ilmu komputer teoretis, sebuah string adalah urutan simbol yang terbatas yang dipilih dari himpunan yang disebut alfabet.

Tipe data string
----------------

Sebuah Tipe data string adalah tipe data yang dimodelkan berdasarkan ide string formal. String adalah tipe data yang sangat penting dan berguna sehingga diimplementasikan di hampir setiap bahasa pemrograman. Dalam beberapa bahasa mereka tersedia sebagai tipe primitif dan dalam bahasa lain sebagai tipe komposit. Sintaks dari sebagian besar bahasa pemrograman tingkat tinggi memungkinkan untuk sebuah string, biasanya dikutip dalam beberapa cara, untuk mewakili sebuah instance dari tipe data string; meta-string seperti itu disebut *literal* atau *string literal*.

### Representasi

Representasi string sangat bergantung pada pilihan repertoar karakter dan metode pengkodean karakter. Implementasi string yang kuno dirancang untuk bekerja dengan repertoar dan pengkodean yang ditentukan oleh ASCII, atau ekstensi terbaru seperti seri ISO 8859. Implementasi kini sering menggunakan repertoar ekstensif yang didefinisikan oleh Unicode bersama dengan berbagai pengkodean kompleks seperti UTF-8 dan UTF-16.

#### String sebagai record

Banyak bahasa, termasuk yang berorientasi objek, mengimplementasikan string sebagai record dengan struktur internal seperti:

```
class string {
 size\_t length;
 char \*text;
};

```
Namun, karena implementasinya biasanya disembunyikan, string harus diakses dan dimodifikasi melalui fungsi anggota. `text` adalah penunjuk ke area memori yang dialokasikan secara dinamis, yang dapat diperluas sesuai kebutuhan. Lihat juga string (C++).

### Perhatian pada keamanan

Tata letak memori dan persyaratan penyimpanan string yang berbeda dapat memengaruhi keamanan program yang mengakses data string. Representasi string yang membutuhkan karakter pengakhiran biasanya rentan terhadap masalah buffer overflow jika karakter pengakhiran tidak ada, disebabkan oleh kesalahan pengkodean atau penyerang dengan sengaja mengubah data. Representasi string yang mengadopsi bidang panjang terpisah juga rentan jika panjangnya dapat dimanipulasi. Dalam beberapa kasus, kode program mengakses data string memerlukan pemeriksaan batas untuk memastikan bahwa itu tidak secara tidak sengaja mengakses atau mengubah data di luar batas memori string.

Data string sering diperoleh dari input pengguna ke program. Dengan demikian, merupakan tanggung jawab program untuk memvalidasi string untuk memastikan bahwa string tersebut mewakili format yang diharapkan. Melakukan validasi input pengguna secara terbatas atau tidak sama sekali dapat menyebabkan program menjadi rentan terhadap serangan injeksi kode.

Tipe data string dalam beberapa bahasa pemrograman
--------------------------------------------------

### Bahasa Pascal

Dalam bahasa Pascal, tipe data string dituliskan sebagai **string**. Pada kompilator Pascal lama, string terpanjang yang dapat dibuat terdiri dari 255 karakter. Hal ini terjadi karena Pascal menggunakan 1 byte data untuk menyimpan panjang efektif string.

Contoh kode Pascal yang menggunakan tipe data string:

```
program str;
var s: string[100];  //jika panjang maksimum tidak dimasukkan, kompilator akan menganggapnya 255
begin
  s := 'Hello world';
  writeln(s);
end.
```

Pada kompilator Pascal yang lebih baru dikenal pula tipe data ANSI-string yang dapat menyimpan karakter lebih banyak.

### Bahasa C

Dalam bahasa C tidak ada tipe data khusus untuk menyimpan string. String biasanya disimpan sebagai larik dari karakter-karakter. Berbeda dengan bahasa Pascal, string pada bahasa C merupakan sebuah null-terminated string, sehingga kapasitasnya hanya dibatasi oleh kapasitas memori komputer. Seperti pada tipe data larik pada bahasa C, pengguna dapat memberikan batas maksimum karakter yang dapat ditampung.

Contoh kode C yang menggunakan tipe data string:

```
#include <stdio.h>
int main(){
  char s[100]; /* membuat string dengan panjang maksimum 99 karakter, karena karakter terakhir harus null */
  s = "Hello world";
  printf("%s\n", s);
}
```

### Bahasa C++

Bahasa C++ merupakan turunan dari bahasa C sehingga representasi string sebagai larik karakter masih berlaku. Namun bahasa C++ juga menyediakan tipe data string yang terdapat dalam C++ Standard Template Library (STL).

Contoh kode C++ yang menggunakan tipe data string pada STL:

```
#include <string>
#include <iostream>
using namespace std;
int main(){
  string s;  //panjang maksimum tidak perlu didefinisikan
  s = "Hello world";
  cout<<s<<endl;
}
```

### Bahasa PHP

Di PHP String adalah kumpulan dari karakter, bilangan, spasi, dan yang lainnya yang berada dalam tanda petik. Di bawah ini semuanya adalah string:

* '9 Januari 2009 '
* '1.000.000'
* "satu juta"
* 'Belajar PHP'

Contoh Penggunaan String di PHP

```
//mendefinisikan string
$kegiatan = 'Belajar PHP';
$tempat = 'wikipedia';
//Strings Concatenation
echo $kegiatan." di ".$tempat;
```

### Bahasa Python

Pada bahasa python string diapit dengan tanda kutip tunggal maupun ganda. Contoh Penggunaan String di Python

```
#mendefinisikan string
string1 = 'halo dunia'
string2 = "ini string pada bahasa python"

#keluaran string
print(string1)
print(string2)

#menggabungkan string
print(string1+" "+string2)
```

Referensi
---------


Wikimedia Commons memiliki media mengenai ***String***.

1. ↑  "Introduction To Java - MFC 158 G". Diarsipkan dari versi asli tanggal 2016-03-03. String literals (or constants) are called ‘anonymous strings’  Parameter `|url-status=` yang tidak diketahui akan diabaikan (bantuan)



  


|  |  |
| --- | --- |
| Ikon rintisan | Artikel bertopik bahasa komputer ini adalah sebuah rintisan. Anda dapat membantu Wikipedia dengan mengembangkannya. |

* l
* b
* s