C++字符操作及字符串打印

目录

一、前言

二、字符串常见操作

2.1. 字符打印

2.2. 字符数组和C风格字符串

2.3. std::string 类

 2.4. 字符串拼接

2.5. 字符串输入

2.6. 遍历字符串

 2.7. 字符串与数字的转换

三、字符串打印


一、前言

        在C++中,处理字符和字符串是基本操作之一,涉及到各种数据类型和函数。今天,我对C++中的字符和字符串打印进行一个全面的总结,包括基础的字符处理以及使用标准库中的字符串类及字符串打印,希望对大家有帮助。

二、字符串常见操作

2.1. 字符打印

        在C++中,字符通常用char类型表示。打印字符可以使用C++的标准输入输出库iostream。

#include <iostream>

int main() {

    char c = 'A';

    std::cout << "打印字符: " << c << std::endl;

    return 0;

}

结果输出:

 

2.2. 字符数组和C风格字符串

        C++中的字符串原始形式是通过字符数组实现的,这通常被称为C风格字符串。C风格字符串以空字符\0结尾。

#include <iostream>

int main() {

    char str[] = "Hello, world!";

    std::cout << "打印C风格字符串: " << str << std::endl;

    return 0;

}

结果输出:

 

2.3. std::string 类

        C++标准库提供了一个字符串类型std::string,它比C风格字符串更加安全和方便。

#include <iostream>#include <string>



int main() {

    std::string s = "Hello, world!";

    std::cout << "打印std::string: " << s << std::endl;

    return 0;

}

结果输出:

 

 2.4. 字符串拼接

        使用std::string可以很容易地进行字符串拼接。

#include <iostream>#include <string>

int main() {

    std::string s1 = "Hello";

    std::string s2 = ", world!";

    std::string s3 = s1 + s2;

    std::cout << "拼接字符串: " << s3 << std::endl;

    return 0;

}

结果输出:

 

2.5. 字符串输入

        接收用户输入的字符串。

#include <iostream>#include <string>



int main() {

    std::string input;

    std::cout << "请输入字符串: ";

    std::getline(std::cin, input);

    std::cout << "你输入的是: " << input << std::endl;

    return 0;

}

结果输出:

 

2.6. 遍历字符串

        遍历字符串的字符可以使用范围基的for循环或传统的for循环。

#include <iostream>#include <string>



int main() {

    std::string s = "Hello";

    std::cout << "遍历字符串: ";

    for (char c : s) {

        std::cout << c << ' ';

    }

    std::cout << std::endl;

    return 0;

}

结果输出:

 

 2.7. 字符串与数字的转换

#include <iostream>#include <string>#include <sstream>



int main() {

    std::string str = "1024";

    int num;

    std::stringstream ss(str);

    ss >> num;  // 字符串到数字

    std::cout << "数字: " << num << std::endl;



    num = 2048;

    ss.str("");  // 清空stringstream

    ss.clear();  // 重置错误标志

    ss << num;   // 数字到字符串

    std::string new_str = ss.str();

    std::cout << "字符串: " << new_str << std::endl;

    return 0;

}

结果输出:

 

三、字符串打印

C语言中 %02X:

X 表示以十六进制形式输出

02 表示不足两位,前面补0输出;

举例:

printf("%02X", 0x123); //打印出:123

printf("%02X", 0x1); //打印出:01

char mac[32];

snprintf(mac, 6, "%2x:%2x:%2x:%2x:%2x:%2x",pe->Addr[0], pe->Addr[1], pe->Addr[2], pe->Addr[3],pe->Addr[4], pe->Addr[5]); //failed 应该为%02x

memcpy(mac, pe->Addr, 6);

%d,%c,%s,%x是程序汇编语言中的格式符,它们的含义:

%c格式对应的是单个字符,%s格式对应的是字符串。

char a;

char b[20];

scanf("%c",&a); //只能输入一个字符。

scanf("%s",b); //可以输入一串不超过20字符的字符串。

%c对应类型为char, %s对应类型为char * , 即字符串

用作输入时, 二者参数都要传char * 型.

%c输入函数只会对一个字节空间赋值. 而%s会一直赋值,直到输入中遇到空白字符为止.

用作输出时, %c传char类型,输出一个字符. %s传char*类型参数, 输出到\0为止.

%c只能输出或输入一个字符,%s输出的是一串字符还有就是char a; string s;

输入的时候scanf("%c", &a);这里的&不能少

而scanf("%s",s);这里不能有&符号

字符转换说明:

      %a(%A)         浮点数、十六进制数字和p-(P-)记数法(C99)

      %c             字符

      %d             有符号十进制整数

      %f             浮点数(包括float和doulbe)

      %e(%E)          浮点数指数输出[e-(E-)记数法]

      %g(%G)          浮点数不显无意义的零"0"

      %i             有符号十进制整数(与%d相同)

      %u             无符号十进制整数

      %o             八进制整数    e.g.     0123

      %x(%X)          十六进制整数0f(0F)   e.g.   0x1234

      %p             指针

      %s             字符串

      %%             "%"

标志:

  左对齐:"-"   e.g.   "%-20s"

  右对齐:"+"   e.g.   "%+20s"

格式字符串(格式):

〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型

"%-md" :  左对齐,若m比实际少时,按实际输出。

"%m.ns" :  输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n

"%m.nf" :  输出浮点数,m为宽度,n为小数点右边数位

"%3.1f" :   输入3852.99 输出3853.0

 

  • 31
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大王算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值