C++ – String vs Array of Char

Kemarin ini gw ngebantuin temen yang dapet tugas buat bikin program buat manipulasi string pake bahasa pemrograman C++. Programnya diminta buat bisa nerima input berupa first name, middle name, & last name. Contohnya kalo programnya dikasih input begini.

Alan Turing

Programnya bakal ngasih output kayak begini.

Turing, Alan

Atau kalo kita masukin nama yang pake tiga kata (termasuk middle name).

Linus Benedict Torvalds

Programnya bakal ngeluarin output begini.

Torvalds, Linus B.

Tapi di sini gw nggak bakal ngebahas cara bikin program ini sih, gw lebih kepikiran ke pemakaian class string di C++ vs pemakaian array of char buat nyimpen data berupa string.

Sebagai orang yang mulai belajar pemrograman dari C (sebenernya sebelumnya gw sempet belajar Visual FoxPro & Visual Basic, tapi udah lupa) yang tipe datanya masih primitif banget, gw sih lebih suka pake array of char daripada class string. Oke, mungkin untuk banyak kasus pemakaian string itu jauh lebih enak daripada array of char. Misalnya untuk value assignment.

//Kalo pake string
string iniString = "Ini String Inputnya";

//Kalo pake array of char
char iniChar[20];
strcpy(iniChar, "Ini String Inputnya");

Class string juga nggak terlalu ngerepotin soal jumlah karakter maksimum yang bisa diampung sih. Untuk array of char kita harus ngeset batas jumlah karakternya dulu waktu arraynya dideklarasiin. Tapi gw nggak tau, apa string di C++ punya fitur kayak di C# atau Java by default? Kayak method split() untuk class string di C# atau class String di Java gitu?

Kayaknya sih gw belum nemu fitur itu di class string C++. Karena itu, buat program yang kayak di atas itu tadi gw lebih nyaranin pake array of char sih. Misalnya buat input yang isinya cuma first name & last name, programnya bisa dibuat begini.

char first_name[20], last_name[20];
int i = 0;
while (input[i] != ' ')
{
    first_name[i] = input[i];
    i++;
}

i++
int j = 0;
while (input[i] != '\0')
{
    last_name[j] = input[i];
    i++;
    j++;
}

Atau kalo ada first name, middle name, sama last name, programnya bisa dibikin begini.

char first_name[20], last_name[20], middle_name;
int i = 0;
while (input[i] != ' ')
{
    first_name[i] = input[i];
    i++;
}

i++
int j = 0;
while (input[i] != ' ')
{
    if (input[i-1] == ' ')
        middle_name = input[i];
    i++;
}

i++;
j = 0;
while (input[i] != '\0')
{
    last_name[j] = input[i];
    i++;
    j++;
}

Jadi gw mecah stringnya pake cara itu untuk array of char…ada yang punya ide yang lebih bagus buat mecah stringnya pake class string mungkin?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s