c++ string类、结构体

2018-07-07 10:18:51

string类的出现让c++相较于原生c处理字符串变的方便。

char dog[4] = {'a', 'b', 'c', '\n'};
char dog[] = "abc";
#include <string>
string str1;
string str2 = "dailei";
string str3 = ' nihao';
str1 = str2 + str3;         //拼接
int len = str1.size();      

#c里面的字符串复制和连接。
#include <cstring>
strcpy(str1, str2);
strcat(str3, str2);

int len = strlen(str1);

下面是对string类用法的汇总

#include <string>

string str = "dailei";
str.append()                //str末尾拼接
str.copy(char* s, size_t len, size_t pos = 0)   //str字符串复制len长度到s里面
str.c_str()      //返回const char *的c字符串,返回的指针可能会失效,所以每次用都要重新调用
str.data()       //返回const char *的c字符串但不保证\0结尾
str.empty()      //判断是否为空
str.erase()      //清空字符串

//返回子字符串第一次出现的位置,如果找不到返回string::npos
str.find()
str.find_first_not_of("abcd")   //返回字符串第一次没有出现abcd中任意字符的位置
str.find_last_not_of("abcd")    //返回字符串第一次没有出现abcd中任意字符的位置(反向)

str.find_first_of("abcd")       //返回字符串第一次出现abcd中任意字符的位置
str.find_last_of("abcd")        //返回字符串第一次出现abcd中任意字符的位置(反向)

str.front()   //指向第一个字符str.front() = 'a'
str.insert()  //指定位置插入字符串
str.replace(pos,len,string)     //替换字符串

str.size()     //返回字节数
str.length()

str += "abc" //连接字符串支持 char */string/char
str += str1
str += 'a'

str = "abcd"   //赋值替换当前
str[1]         //返回char引用

str.pop_back()    //删除最后一个字符
str.push_back(char c)   //新增一个字符

str.substr(2,4)   //截取字符串,返回新string对象

std::getline(std::cin,name)


//c++11
int a = stoi("1000", nullptr,16);       //16进制的1000转成10进制的4096
stol()
stoul()

string pi = to_string(3.1415);  #数字转字符串


结构体

c++ 声明结构体可以省略 struct 关键字。

struct person{
    char name[20];
    int age;
    std::string jog;
}

struct person man;
#下面声明省略了struct关键字
person man = {"dailei", 22, "it"};
person man = {}                     //初始化为0

man.age = 22;

person woman = man;  //直接用=赋值
woman.job = "dandan";    //string对象直接赋值
strcpy(woman.name, "dandan");   //char[]必须用strcpy


总结:

c的基础语法请参考 c语言基础+核心


©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。