//***** 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; }