C++字符串

本文介绍了C++中字符串的各种操作方法,包括字符串的构造、分割、大小写转换及输入方式等,并对比了C风格字符串与string类库的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博文:
http://jingyan.baidu.com/article/20b68a8854f919796dec6265.html

字符串构造 string* s = new string(5,’-‘); 就是以 - 初始化长度为5的字符串。
构造函数有七八种,其中c++11新增加一种

字符串(string)的分割

方法1:

string = ” hello world welcome to here!”;
istringstream ss(s);
vector str{istream_iterator(ss),istream_iterator()};
注:包含头文件 sstream 将字符串以空白字符风格成单个字符串(不包含空白字符)存放在动态数组中。
空白字符指:空格、换行符、制表符、更普遍的说是任何将其作为参数来调用isspace()时,该函数返回true的字符
方法2:

void split(const std::string &s, std::vector &elems, char delim = ’ ‘) {
std::stringstream ss;
ss.str(s);
std::string item;
while (std::getline(ss, item, delim)) {
elems.push_back(item);
}
}
但是此方法存在一个缺陷就时,当有多个连续的 ‘ ’ 时,会返回多个空字符串


大小写转换

  1. c++库中 string
char a[100] = "Welcome to Here!"
char *b ;
b = strlwr(a);
b = strupr(s); 

2.. STL中

string s = "Abc";
transform(s.begin(), s.end(), s.begin(), tolower);
transform(s.begin(), s.end(), s.begin(), toupper);

还可以自定义,或许效率会更高
当然方法还有其他的

c++中对于字符串的处理一般包括两种,一种是 C风格的,另一种是基于 string 类库的方法()


字符串的输入

1.C风格

C风格的使用字符数组表示,最后一个字符为’\0’,ASIIC为0
char c1[10] = “Hello Guy”;
char c2[] = “Welcome to earth”;
char c3[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’ }; // 如果设置长度,必须是常量
在字符数组中 ‘\0’ 表示字符串的结束
strlen(c1) 只计算可以看见的字符串长度
sizeof(c1) 支出整个数组的长度

字符串的输入

  • cin >> c1;
    // cin使用 空格、制表符、换行符来确定字符串的结束位置,
    也就是说 cin 只读入一个单词
  • cin.getline(c1,20);
    //通过换行符来结束行尾,但是不保存换行符。 在存储字符串时,用空字符来替换换行符
    也就是说每次将一行(包含空格、换行符)读入一行字符串
  • cin.get(); cin.get(c1,20);
    //依然以换行符来结束读取一行字符串,但是读完一行之后,还会将换行符读入队列,这时如果再读入一行的话,就会将换行符作为一行读入。
    由于cin.get()函数会返回一个cin
    因此,连续读入几行的可以这样使用
    cin.get(c1,20);
    cin.get(c2,20).get();
    或者,
    (cin>>c1).get();;
    cin.getline(c2,20);

2.string类库

string 作为一种数据类型,与字符数组(复杂类型)的主要区别是:string对象可以声明为简单变量
string s1; // 定义一个字符串未初始化,默认长度为0,随后字符串的长度可以根据需要调整

  • cin>>s1;

  • getline(cin,s1);

char a1[20]; string a2;
cin.getline(a1,20); getline(cin,a2); string类中getline不是类方法。

string类中,可以直接对字符串进行赋值、拼接、附加,、
计算长度使用 str1.size(); 这是string对象的一个方法。

对应的c风格中
strcpy(chars1,chars2); //复制
strcat(chars1,chars2); //拼接,将chars2拼接到chars1后面

后续再加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值