字符串

 

  • 读入字符串:

1.scanf()读入char[]  *****************用这个***********************

char str[1024];
scanf("%[^\n]",&str);
getchar();

2.gets()读入char[]  !!!!!PAT里面使用gets会报错!!!!!!!

char str[1024];
gets(str);
gets_s(str); // VS

3.getline()读入string或char[]

#include <iostream>
#include <string>
using namespace std;

string str;
getline(cin,str);//读入string
//
char str2[1024];
cin.getline(str2,1024);//读入char数组

scanf 与 getline连用时,注意需要使用getchar读入换行符

 

4.cin 读入 string

//例如输入数据是不确定个数的一行(用空格隔开) //数据(关键词) :test code debug sort keywords

while (cin >> keyword) {
	//mpKeywords[keyword].insert(id);
	char c = getchar();
	if (c == '\n') break;
}

参考:https://www.cnblogs.com/AlvinZH/p/6798023.html

 

5.gets 和 scanf 的区别

gets()函数用来接收输入的字符串,而scanf()可以接收多种格式的数据。两个函数遇到回车符都会认为是输入结束,但是gets()可以接收空格,但是scanf()则不行。例如

char char_array[20] = {0};

scanf(“%s”, char_array);

此时,在控制台中输入“Hello World”时,char_array的值是Hello。而

char char_array[20] = {0};

gets(char_array);

此时,在控制台中输入“Hello World”时,char_array的值是Hello World

 

 

  • 输出

1.输出char[]

printf("%s", str);

2.输出string  因为string不是c语言的内置数据,所以直接printf输出string类型的是办不到的。

printf("%s", str.c_str());

-------------------------------------------------------

 

  • string.h中常用函数:

 

1.长度

 

   1)char[]

#include <string.h>

strlen(char[]);

   2)string

#include <string>
using namespace std;


string.length();
string.size();

 

2.复制

   1)char[]

         strcpy(c, "aaa");       //<string.h>
         strcat(char *destin, char *source);            // 连接

 

   2) string

         string = "aaa";

 

3.比较

1)string可以用>直接比较,相当于strcmp    字符串可以用 + 直接连接

2)char[]   使用 strcmp(str1, str2),两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。

        若str1==str2,则返回零;

        若str1<str2,则返回负数;

        若str1>str2,则返回正数。

  不能使用string类型,需要用char[]。可以用string.c_str()进行转换。

string str1 = "asdf";
string str2 = "qwer";
strcmp(str1.c_str(), str2.c_str());//要用c_str()

 

---------------------------------------------------------

 

  • string中常用函数

1.insert()

①insert(pos, string);           insert(3, "sss");

②insert(it, it1, it2);              insert(s1.begin() + 3, s2.begin() + 2, s2.end());   // 将s2的部分加入到s1

s.append("aa");               // append

s  = s + c;                        // c是char类型,写成 s += c 就错了

2.erase()

     ①earse(it)  单个元素

erase(str.begin() + 4);

     ②erase   区间

第一种:erase(begin, end)

      erase(str.begin()  + 2, str.end() - 1);

第二种:erase(pos, length)

      erase(3, 2);

3.substr(pos, lenth)

substr(5, 3);

 

4.find()

str.find(str2);      //str2是str的子串

str.find(str2, pos);     // pos 是开始匹配的位置

5.replace()

str.replace(pos, len, str2) ;   //把str从pos号位开始长度为len的子串替换为str2

str.replace(it1, it2, str2);       //把str的迭代器[it1, it2) 范围的子串替换为str2

 

 

 

------------------------------------------------------------------

  • 头文件的区别

1.cstring   和string.h对应,c++版本的头文件,包含比如strcpy之类的字符串处理函数

#include <cstring>   //不可以定义string s;可以用到strcpy等函数
using   namespace   std;

2.string     包含std::string的定义,属于STL范畴
#include <string>   //可以定义string s;可以用到strcpy等函数
using   namesapce   std;

 

3.string.h    和cstring对应,c版本的头文件,包含比如strcpy之类的字符串处理函数

#include <string.h>   //不可以定义string s;可以用到strcpy等函数

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值