现在的位置: 首页 > 综合 > 正文

C++_字符串(string)

2016年08月30日 ⁄ 综合 ⁄ 共 3394字 ⁄ 字号 评论关闭
//***** string和char的赋值 *****
void test1()
{
    // char
    char ch1[] = "Hello World One";
    char ch2[] = "Hello World Two";

    std::cout << "ch1:" << ch1 << std::endl;
    std::cout << "ch2:" << ch2 << std::endl;

    strcpy(ch1,ch2);  // 关键在这里,如果是char数组进行赋值,只能采用strcpy复制,或者for循环一个个进行赋值

    std::cout << "ch1:" << ch1 << std::endl;
    std::cout << "ch2:" << ch2 << std::endl;

    /*
    输出:
        ch1:Hello World One
        ch2:Hello World Two
        ch1:Hello World Two
        ch2:Hello World Two
    */

    // string
    string str1 = "Hello World One";
    string str2 = "Hello World Two";

    std::cout << "str1:" << str1 << std::endl;
    std::cout << "str2:" << str2 << std::endl;

    str1 = str2;  // 如果是string类型字符串,就可以直接进行字符串赋值

    std::cout << "str1:" << str1 << std::endl;
    std::cout << "str2:" << str2 << std::endl;

    /*
    输出:
        ch1:Hello World One
        ch2:Hello World Two
        ch1:Hello World Two
        ch2:Hello World Two
    */
}

//***** string和char的拼接(strcat) *****
void test2()
{
    // char
    char ch1[] = "Hello World One";
    char ch2[] = "Hello World Two";
    strcat(ch1,ch2);  // char字符串拼接函数
    int slen = strlen(ch1);  // char字符串计算长度
    std::cout << "ch1:" << ch1 << std::endl;
    std::cout << "ch2:" << ch2 << std::endl;
    std::cout << "slen:" << slen << std::endl;

    // string
    string str1 = "Hello World One";
    string str2 = "Hello World Two";
    str1 = str1 + str2;
    slen = strlen(str1.c_str());  // string也可以使用char类型的函数,但必须先转成char类型
    int size = str1.size();
    int len = str1.length();
    std::cout << "str1:" << str1 << std::endl;
    std::cout << "str2:" << str2 << std::endl;
    std::cout << "slen:" << slen << std::endl;
    std::cout << "size:" << size << std::endl;
    std::cout << "len:" << len << std::endl;
}

//***** string和char的指定拼接(strncat) *****
void test3()
{
    // char
    char ch1[] = "Hello World One";
    char ch2[] = "Hello World Two";
    strncat(ch1,ch2,1);  // char类型只能ch2的开头开始复制,不能指定开始复制的位置
    std::cout << "ch1:" << ch1 << std::endl;
    std::cout << "ch2:" << ch2 << std::endl;

    // string
    string str1 = "Hello World One";
    string str2 = "Hello World Two";
    str1.append(str2,2,3);  // string类型可以指定开始复制的位置
    std::cout << "str1:" << str1 << std::endl;
    std::cout << "str2:" << str2 << std::endl;
}

//***** string和char的指定复制 *****
void test4()
{
    // char
    char ch1[10] = "gh";
    char ch2[] = "abcdef";
    strncpy(ch1,ch2,3);  // strncpy和strcpy相似,只不过多了可以指定的复制长度
    std::cout << "ch1:" << ch1 << std::endl;
    std::cout << "ch2:" << ch2 << std::endl;

    // string
    string str1 = "gh";
    string str2 = "abcdef";
    str1.replace(0,1,str2,4,2);  // string类型的replace可以指定任意的开始复制位置和复制长度
    std::cout << "str1:" << str1 << std::endl;
    std::cout << "str2:" << str2 << std::endl;
}

//***** string插入 *****
void test5()
{
    string str1 = "12789";
    string str2 = "3456";
    str1.insert(2,str2,0,4);  // string类型插入字符串
    std::cout << "str1:" << str1 << std::endl;
    std::cout << "str2:" << str2 << std::endl;
}

//***** string删除 *****
void test6()
{
    string str1 = "give me";
    std::cout << "删除前:" << str1 << std::endl;
    str1.erase(2,2);  // string类型删除指定的字符串
    std::cout << "删除后:" << str1 << std::endl;
}

//***** string查找 *****
void test7()
{
    string str1 = "Hello World";
    int f = str1.find('W',0);  // string类型的查找字符的函数
    if(f != string::npos)  //  string::npos是string类型的一个常量,这个常量在每个平台都不同,在window平台为-1
    {
        std::cout << "在第" << f << "个字符" << std::endl;
    }
    else
    {
        std::cout << "没有找到" << std::endl;
    }
}

//***** string比较 *****
void test8()
{
    string str1 = "155";
    string str2 = "52";
    char ch1[] = "34";
    int i;
    int j;
    int k;
    i = str1.compare(str2);  // string类型的比较函数,这是第一种重载函数
    j = str1.compare(ch1);  // string类型的比较函数的重载
    k = str1.compare(0,2,str2);  // string类型的比较函数的重载
    std::cout << str1 << " : " << str2 << " = " << i << std::endl;
    std::cout << str1 << " : " << ch1 << " = " << j << std::endl;
    std::cout << str1 << " : " << str2 << " = " << k << std::endl;
}

//***** string判断是否为空 *****
void test9()
{
    string str1 = "Hello World";
    if(str1.empty())  // string类型的判断是否为空的函数empty(),为空返回真,不为空返回假
    {
        std::cout << "字符串为空" << std::endl;
    }
    else
    {
        std::cout << "字符串不为空" << std::endl;
    }
}

//***** string转换成char *****
void test10()
{
    string str = "Hello World";
    const char *ch = NULL;
    ch = str.c_str();  // string类型使用c_str()函数来转换成char字符串
    std::cout << "ch:" << ch << std::endl;
}

【上篇】
【下篇】

抱歉!评论已关闭.