字符串 / 编程语言 / 运算符 · 2023年 10月 8日 0

字符串操作

63 次浏览

不同编程语言对字符串的默认支持程度不同,脚本语言倾向于让字符串操作更简单易懂,可以支持字符串和不同类型互操作。

字符串加法

  • C/ObjC 把字符串当指针,两个指针相加不允许。
  • C++不支持两个字符串相加
    • std::string s = "hello " + "world";
    • 但如果是字符串和整数相加,等同于指针加法,C/C++一样。
      • 例如"hello" + 1是字符串"ello".
  • Java/C#均支持字符串相加,包括字符串 + <其他类型>(其他类型自动转换成字符串)。
  • Python支持两个字符串相加,但不允许字符串和整数相加。
  • PHP利用.和.=实现字符串拼接。
  • 仓颉 支持两个字符串相加,但不允许字符串和其他类型相加。如需要,其他类型必须调用toString转换成字符串。

字符串和其他类型互转

此功能并非核心需求,早期编程语言一般不自带标准类型转换字符串功能。Java/Python/JS等语言很自然加入。

  • Java/C#/JS 利用toString或ToString函数完成,Python函数名更精简: str().
  • C/ObjC C90标准atoi可转换字符串到int整数(其他类型有不同API,比如atol, atoll, 名称不统一);itoa不是C语言标准函数,它将int整数转换成字符串,但没有对其他数据类型的转换API,也可用sprintf完成,C++额外提供stringstream/ostringstream也可间接完成转换,C++11引入to_string(val)函数轻松完成,同时引入sto*反转为对应数据类型。
    • C++为了提高效率,避免各种对象复制拷贝,提供了低层次原地转换API: to_chars和from_chars.
  • 仓颉 可以用形如123.toString()返回字符串"123",用形如Int64.Parse("123")返回整数123.