微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

玩转字符串——不一样的风格

玩转字符串——不一样的风格

字符串指存储在内存的连续字节中的一系列字符。

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 举报,一经查实,本站将立刻删除。

相关推荐