
函數語言程式設計 - 字串
字串是一組字元,包括空格。可以說它是一個以NULL字元('\0')結尾的字元一維陣列。字串也可以被認為是一個預定義的類,大多數程式語言(如C、C++、Java、PHP、Erlang、Haskell、Lisp等)都支援它。
下圖顯示了字串“Tutorial”在記憶體中的樣子。

在C++中建立字串
下面的程式是一個示例,它演示瞭如何在C++(一種面向物件的程式語言)中建立字串。
#include <iostream> using namespace std; int main () { char greeting[20] = {'H', 'o', 'l', 'i', 'd', 'a', 'y', '\0'}; cout << "Today is: "; cout << greeting << endl; return 0; }
它將產生以下輸出:
Today is: Holiday
Erlang中的字串
下面的程式是一個示例,它演示瞭如何在Erlang(一種函數語言程式設計語言)中建立字串。
-module(helloworld). -export([start/0]). start() -> Str = "Today is: Holiday", io:fwrite("~p~n",[Str]).
它將產生以下輸出:
"Today is: Holiday"
C++中的字串操作
不同的程式語言對字串支援不同的方法。下表顯示了C++支援的一些預定義字串方法。
序號 | 方法及描述 |
---|---|
1 | Strcpy(s1,s2) 將字串s2複製到字串s1中 |
2 | Strcat(s1,s2) 在s1的末尾新增字串s2 |
3 | Strlen(s1) 返回字串s1的長度 |
4 | Strcmp(s1,s2) 當字串s1和s2相同時返回0 |
5 | Strchr(s1,ch) 返回字串s1中字元ch第一次出現的指標 |
6 | Strstr(s1,s2) 返回字串s1中字串s2第一次出現的指標 |
下面的程式演示瞭如何在C++中使用上述方法:
#include <iostream> #include <cstring> using namespace std; int main () { char str1[20] = "Today is "; char str2[20] = "Monday"; char str3[20]; int len ; strcpy( str3, str1); // copy str1 into str3 cout << "strcpy( str3, str1) : " << str3 << endl; strcat( str1, str2); // concatenates str1 and str2 cout << "strcat( str1, str2): " << str1 << endl; len = strlen(str1); // String length after concatenation cout << "strlen(str1) : " << len << endl; return 0; }
它將產生以下輸出:
strcpy(str3, str1) : Today is strcat(str1, str2) : Today is Monday strlen(str1) : 15
Erlang中的字串操作
下表列出了Erlang支援的預定義字串方法。
序號 | 方法及描述 |
---|---|
1 | len(s1) 返回給定字串中的字元數。 |
2 | equal(s1,s2) 如果字串s1和s2相等則返回true,否則返回false |
3 | concat(s1,s2) 在字串s1的末尾新增字串s2 |
4 | str(s1,ch) 返回字元ch在字串s1中的索引位置 |
5 | str(s1,s2) 返回s2在字串s1中的索引位置 |
6 | substr(s1,s2,num) 此方法根據起始位置和從起始位置開始的字元數,從字串s1返回字串s2 |
7 | to_lower(s1) 此方法返回小寫字串 |
下面的程式演示瞭如何在Erlang中使用上述方法。
-module(helloworld). -import(string,[concat/2]). -export([start/0]). start() -> S1 = "Today is ", S2 = "Monday", S3 = concat(S1,S2), io:fwrite("~p~n",[S3]).
它將產生以下輸出:
"Today is Monday"
廣告