0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++入门之string

jf_78858299 来源: QStack 作者: 月下西楼 2023-03-17 13:58 次阅读

前言

前一篇文章我们已经了解了C++中的基本类型,C++还提供了很多抽象数据类型,例如字符串string,string包含多个字符,以及可变长度的vector,vector可以包含多个同一类型的对象。

使用using声明

在之前的程序中可以看到我们通过命名空间来解决可能的命名冲突,代码如下

# include
int main() {
    std::cout<<"please enter two numbers:"<

这样看来每次调用cin和cout时都要带上命名空间和范围标识符会显得比较繁琐,就像在Java中每次调用方法都要带上包名和类名一样,Java使用import关键字来引入依赖,在C++中则是使用using关键字来解决这个问题,例如上述例子可以通过using std::cin来表示引入std命名空间内的cin。

# include
using std::cin;
using std::cout;
using std::endl;
int main() {
    cout<<"please enter two numbers:"<

如果确定程序中没有命名冲突,可以直接使用using std,不需要分别一一引入,就像Java中直接import一个类。

# include
using namespace std;
int main() {
    cout<<"please enter two numbers:"<

❝需要注意的是头文件不能使用using,因为头文件的内容是需要拷贝到引入头文件的文件当中去,如果多个头文件使用using引入相同的命名空间,程序无法知道使用哪一个,会引发命名冲突。

string

字符串是一系列字符的组合,如果需要使用字符串需要引入头文件string,其也在std命名空间。

string的定义与初始化

string的定义和初始化方法有以下几种

# include
# include
using std::string;
using std::cout;
using std::endl;
int main() {
    string s1; //默认初始化,s1是一个空字符串
    string s2 = s1; // s2是s1的拷贝
    string s3(s1); //等同于s2 = s1,s3是s1的拷贝
    string s4("value"); //s4是value的拷贝
    string s5 = "value"; 
    string s6(4, 'c'); // s6是cccc
    cout<

string操作

之前我们曾提到一个对象的类型决定了其存储的方式以及操作,string支持的操作如下

操作 解释
os << s 将字符串写到输出流
is >> s 从输入流中读取
getline(is, s) 从输入流中读取一行
s.empty() 判断是否为空,如果为空返回true,否则返回false
s.size() 返回字符串的长度
s[n] 返回第n个字符
s1 + s2 将s1和s2拼接
s1 = s2 将s2的字符串拷贝给s1
s1 == s2 判断s1和s2的字符串是否相等
s1 != s2 判断不相等
< <= > >= 比较是大小写敏感的

有时候在接受输入时我我们并不想忽略输入的空格,这时候可以使用getline来获取输入的一整行。

# include
# include
using std::string;
using namespace std;
int main() {
   string line;
   while (getline(cin, line))
   {
    cout<

字符串是由一系列的字符组成,而字符中有一些分类,例如4是一个数字字符,a是一个小写字母,C++中提供了一些方法可以很方便地判断字符的类型和做一些操作。

函数 解释
isalnum 如果是字母或者数字返回true
isalpha 如果是字母返回true
iscntrl 如果是control返回true
isdigit 如果是数字返回true
isgraph 如果不是空格但是可打印返回true
islower 如果时小写字母返回true
isprint 如果时可打印返回true
ispunct 如果是标点返回true
isspace 如果是空格返回true
isupper 如果是大写字母返回true
isxdigit 如果时16进制数返回true
tolower 将大写字母转化为小写字母
toupper 将小写字母转化为大写字母

以下代码就是将hello world转化为HELLO WORLD

# include
# include
using std::string;
using namespace std;
int main() {
   string line = "hello world";
   for (auto &c : line) {
    c = toupper(c);
   }
   cout<
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    579

    浏览量

    20515
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73646
  • string
    +关注

    关注

    0

    文章

    40

    浏览量

    4735
收藏 人收藏

    评论

    相关推荐

    C++字符串string

    stringC++编程语言中的字符串。在C++中字符串处理可以使用c语言字符串形式char *,也可以使用string类格式。
    的头像 发表于 07-10 00:26 1288次阅读
    <b class='flag-5'>C++</b>字符串<b class='flag-5'>string</b>

    C++STL算法(二)

    C++STL算法(二)
    的头像 发表于 07-18 14:49 1051次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>STL算法(二)

    c++STL算法(三)

    c++STL算法(三)
    的头像 发表于 07-18 15:00 1294次阅读
    <b class='flag-5'>c++</b><b class='flag-5'>之</b>STL算法(三)

    C++文件操作

    C++文件操作
    的头像 发表于 07-21 10:52 1115次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>文件操作

    C++入门基础教程大全

    C++入门基础教程大全 C++是一种面向对象的编程语言,但如果系统没有采用面向对象的技术,C++只能作为面向过程的语言来使用.
    发表于 05-29 10:25 0次下载

    C++ 入门自学教程

    C++ 入门自学教程从入门知识开始讲起,比较有利于初学者入门掌握,比较好懂,能够对C++有一个全面认识
    发表于 11-17 10:36 0次下载

    Visual C++编程入门视频

    Visual C++编程入门视频!资料来源网络,如有侵权,敬请见谅
    发表于 11-20 15:10 6次下载

    c++入门经典习题集

    让大家全方位傻瓜式学习大话设计模式(3.45MB)c++入门经典习题集+多年积累的类库。
    发表于 07-13 15:11 2次下载

    C++入门教程之C++程序设计的课件资料免费下载

    本文档的主要内容详细介绍的是C++入门教程之C++程序设计的课件资料免费下载主要内容包括了:1. 认识C++2. C++的现状和发展3.
    发表于 12-07 08:00 33次下载
    <b class='flag-5'>C++</b><b class='flag-5'>入门</b>教程之<b class='flag-5'>C++</b>程序设计的课件资料免费下载

    如何使用C语言实现动态扩容的string

    众所周知,C++ 中的string使用比较方便,关于C++ 中的string源码实现可以看我的这篇文章:源码分析C++
    的头像 发表于 10-25 10:59 2014次阅读

    C++函数模板的概念及意义

    一、函数模板的引出:1、c++中有几种交换变量的方法:(1)定义宏代码块(2)定义函数代码版本一:#include <iostream>#include <string>using namespace
    的头像 发表于 12-24 15:58 868次阅读

    C++设计新思维-泛型编程与设计应用

    C++设计新思维-泛型编程与设计应用
    发表于 11-16 15:59 3次下载

    C++学习笔记c++的基本认识

    自这篇文章我们即将开始C++的奇幻之旅,其内容主要是读C++ Primer的总结和笔记,有兴趣可以找原版书看看,对于学习C++还是有很大帮助的。这篇文章将从一个经典的程序开始介绍C++
    的头像 发表于 03-17 13:57 737次阅读

    C++入门通用算法

    C++ 是一种强大的编程语言,它提供了许多通用算法,可以用于各种容器类型。这些算法是通过迭代器来操作容器中的元素,因此它们是通用的,可以用于不同类型的容器。在本篇博客中,我们将详细介绍 C++ 的通用算法。
    的头像 发表于 05-17 09:40 670次阅读

    C++之父新作带你勾勒现代C++地图

    为了帮助大家解决这些痛点问题,让大家领略现代C++美,掌握其中的精髓,更好地使用C++C++之父Bjarne Stroustrup坐不住了,他亲自操刀写就了这本《
    的头像 发表于 10-30 16:35 853次阅读
    <b class='flag-5'>C++</b>之父新作带你勾勒现代<b class='flag-5'>C++</b>地图