我是真没想到python能够这么懒
先说c++,string类是一个额好像叫模版类?总之它是一个包含很多方法的类,比如length(),比如find()等等等。某种意义上,它很像是数组:有项数,每项的内容是可变的,访问每项需要用s[x]这样的格式。但因为它可变,所以我们在处理时,需要随时注意,如果说对一个string类的对象比如string s进行操作,很有可能会导致s的值改变,比如s.append("so foolish"),这种操作在python中是不会改变s的,但在c++,s已经变了
常用的方法一般是长度啊,查找啊,插入删除啊,清空啊,判断是否为空啊,替换啊,交换啊,获取子串啊,比较字符串靠左的ascii值大小啊什么的。一些逻辑操作和重载+也可以使用,但其意义和数字的操作是两码事。
以上操作:length();find(s/'a')/rfind();insert();earse();clear();empty();replace(x,len," ");swap();substr();compare()
关于一些io流的问题:cin读单一个字符,getline(cin,s)可以让s获取输入的整句话
另外今天弄了个小的测试,还行,也可以发出来看看
#include<iostream>
#include<string>
using namespace std;
int main(){
string s("je t'aime");
cout <<" ' " << s << " ' has "<<s.length() <<" characters" << endl;
s.append(" !");
cout << s << endl;
int firstplace = s.find(' ');
int lastplace = s.rfind(' ');
string s1(s);
string s2(s);
int a = 0;
if (s1.find(' ') != string::npos) // 如果有空格
{
s1.erase(0, s1.find(' ') + 1); // 删除第一个空格之前的所有字符,包括第一个空格
}
cout << s1 << endl;
a = lastplace;
s2.replace(a+1, s2.length() - 1 - a, "?");
cout << s2 << endl;
string t;
a = firstplace;
while (a < lastplace) {
t.push_back(s[a]);
a++;
}
cout << t << endl;
return 0;
}
python的字符串相对简单,即产生即固定,这让其免去了被篡改的风险,但同时,其只能使用一些基础的函数来产生内容上的改变,如果要测量长度什么的涉及指针的,只能用外部函数,比如常见的len()。
附一段很有意思的常见函数实例
s = "je t‘aime !" # 定义字符串
print(s.capitalize()) # 使用capitalize()函数,将第一个字母转换为大写
print(s.lower()) # 使用lower()函数,将所有字母转换为小写
print(s.upper()) # 使用upper()函数,将所有字母转换为大写
print(s.title()) # 使用title()函数,将每个单词的第一个字母转换为大写
print(len(s)) # 使用len()函数,返回字符串的长度
print(s.count('e')) # 使用count()函数,统计字符串中'e'出现的次数
print(s.find('a')) # 使用find()函数,查找字符串中'a'第一次出现的位置
print(s.replace('e', 'x')) # 使用replace()函数,将字符串中的'e'替换为'x'
print(s.split()) # 使用split()函数,将字符串按照空白字符切分为多个子串,并返回一个列表
print('-'.join(s)) # 使用join()函数,将字符串中的每个字符用'-'连接起来,并返回一个新的字符串