玩转字符串——不一样的风格
字符串指存储在内存的连续字节中的一系列字符。
C++中的字符串分为两种形式:
- C 风格字符串
- C++ string类字符串
1 C 风格字符串
C-风格字符串的头文件为#include,默认以’\0’结束,存储空间有’\0’。
字符串定义形式:
- 字符数组:
char a[5] = {'h','e','l','l','o'};
- 字符串
char a[5] = {'a','b','c','d','\0'};
也有另外一种字符串定义:
char a[8] = "abcdefg";
char a[] = "awdda;wdaa";
字符数组或字符串的长度测量函数为sizeof、strlen
- sizeof:返回所占总空间的字节数,针对整型或字符型数组及整型或字符型指针。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间大小。
- strlen:返回字符数组或字符串所占的字节数,针对字符数组及字符指针。
举个栗子:
定义一些字符串,求长度并运算、输出
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char s1[100];
char s2[20] = "hello!";
char s3[] = "a";
char s4 = 'a';
char s5[3] = {'a','b','c'};
char s6[3] = {'a','b','\0'};
cin >> s1;
cout << strlen(s1) << endl;
cout << s1 << " " << s2 << " " << s3 << " " << s4 << " " << endl;
cout << s5 << " " << s6 << " " << endl;
cout << "djawdawda" "123" << endl;
cout << "dwaddadadw"
"123" << endl;
cout << "adawdada 123" << endl;
return 0;
}
运行结果
【C 风格字符串的输入方式有cin、getline和get】
- cin:使用空格、制表符、换行符来确定字符串的结束位置,因此字符串只能接收一个单词。换行符会被保留在输入序列中。
- getline:读取一行,直到遇到换行符,丢弃换行符。
- get:读取一行,直到遇到换行符,换行符被保留在输入序列中。
使用cin和get后会将换行符保留在输入序列中,解决办法为再调一次cin.get。
2 C++ string类字符串
C++ string类字符串的长度没有限制,其头文件为#include。C++中的string类隐藏了字符串的数组性质,使用户可以像处理普通变量一样处理字符串。
注意
- 可以使用C风格字符串初始化string类字符串
- 可以使用cin输入并将输入的内容存储到string类字符串中
- 可以使用cout输出string类字符串
- string类字符串没有’\0’的概念
- char数组使用了一组用于存储一个字符串的存储单元,而string变量使用了一个表示字符串的实体。
字符串的长度测量函数有.length()和.size()
C++ string类字符串的输入方式有cin和getline
来个栗子:
输入3个字符串,找出其中最小的字符串
#include<iostream>
#include<string>
using namespace std;
string minstr(string s1 , string s2){
if(s1 < s2){
return s1;
}
else{
return s2;
}
}
int main(){
string s1 , s2 , s3 , min;
cin >> s1 >> s2 >> s3;
min = minstr(s1,minstr(s2,s3));
cout << min << endl;
return 0;
}
原文地址:https://www.jb51.cc/wenti/3282209.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。