C++常用字符串操作举例

常用字符串操作:
    strcpy_s,strcat_s,strchr,strcmp,_strcmpi,strcspn,_strdup,_stricmp,strerror_s,

strncmp,_strnicmp,strncpy_s,_strnset_s,strpbrk,strrchr,_strrev,_strset_s,strspn,

strstr,strtod,strtok_s,strtol,_strlwr_s,_strupr_s,_swab

举例如下:

  1 #include<iostream>
  2 #include<string>
  3 using namespace std;
  4 
  5 int main()
  6 {
  7     /*char string[10];
  8     char *str1 = "abcdefghi";
  9 
 10     strcpy_s(string,str1);
 11 
 12     printf("%s\n",string);*/
 13 
 14     /*char destination[25];
 15     char *blank = " ", *c = "C++", *Borland = "Borland";
 16 
 17     strcpy_s(destination, Borland);
 18     strcat_s(destination, blank);
 19     strcat_s(destination, c);
 20 
 21     printf_s("%s\n",destination);*/
 22 
 23     /*char string[20];
 24     char *ptr, c = 'r';
 25 
 26     strcpy_s(string, "This is a string");
 27     ptr = strchr(string, c);
 28     if(ptr)
 29     printf_s("The character %c is at position: %d\n", c, ptr - string);
 30     else
 31     printf_s("The character was not found\n");*/
 32 
 33     /*char *buf1 = "aaa",  *buf2 = "BBB", *buf3 = "ccc";
 34     int ptr;
 35 
 36     ptr = strcmp(buf2, buf1);//区分大小写
 37     if(ptr > 0)
 38     printf_s("buffer 2 is greater than buffer 1\n");
 39     else
 40     printf_s("buffer 2 is less than buffer 1\n");
 41 
 42     ptr = strcmp(buf2, buf3);
 43     if(ptr > 0)
 44     printf_s("buffer 2 is greater than buffer 3\n");
 45     else
 46     printf_s("buffer 2 is less than buffer 3\n");*/
 47 
 48     /*char *buf1 = "BBB", *buf2 = "bbb";
 49     int ptr;
 50 
 51     ptr = _strcmpi(buf2, buf1);//不区分大小写的比较两个buffer的前n个字符
 52     if(ptr > 0)
 53     printf_s("buffer 2 is greater than buffer 1\n");
 54     else if(ptr < 0)
 55     printf_s("buffer 2 is less than buffer 1\n");
 56     else
 57     printf_s("buffer 2 is equals buffer 1\n");*/
 58 
 59     /*char *string1 = "1234567890";
 60     char *string2 = "747DC8";
 61     int length;
 62 
 63     length = strcspn(string1, string2);//查找字符串2中第一个在字符串1中出现的位置
 64     printf_s("Character where strings intersect is at position %d\n", length);*/
 65 
 66     /*char *dup_str, *string = "abcde";
 67     dup_str = _strdup(string);//将串拷贝到新建的位置处
 68     printf_s("%s\n", dup_str);
 69     free(dup_str);*/
 70 
 71     /*char *buf1 = "BBB", *buf2 = "bbb";
 72     int ptr;
 73 
 74     ptr = _stricmp(buf2, buf1);//以大小写不敏感的方式比较两个字符串,与strcmp比较着进行记忆
 75     if(ptr > 0)
 76     printf_s("buffer 2 is greater than buffer 1\n");
 77     else if(ptr < 0)
 78     printf_s("buffer 2 is less than buffer 1\n");
 79     else
 80     printf_s("buffer 2 is equals buffer 1\n");*/
 81 
 82     /*char *buffer;
 83     buffer = strerror_s(errno);
 84     printf_s("Error: %s\n", buffer);*/
 85 
 86     /*char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";
 87     int ptr;
 88 
 89     ptr = strncmp(buf2, buf1, 3);//从左到右比较两个字符串的前3个字符
 90     if(ptr > 0)
 91     printf_s("buffer 2 is greater than buffer 1\n");
 92     else
 93     printf_s("buffer 2 is less than buffer 1\n");
 94 
 95     ptr = strncmp(buf2, buf3, 3);
 96     if(ptr > 0)
 97     printf_s("buffer 2 is greater than buffer 3\n");
 98     else
 99     printf_s("buffer 2 is less than buffer 3\n");*/
100 
101     /*char *buf1 = "BBBccc", *buf2 = "bbbccc";
102     int ptr;
103 
104     ptr = _strnicmp(buf2, buf1, 3);//不区分大小写地比较两个字符串的前三个字符
105     if(ptr > 0)
106     printf_s("buffer 2 is greater than buffer 1\n");
107     else if(ptr < 0)
108     printf_s("buffer 2 is less than buffer 1\n");
109     else
110     printf_s("buffer 2 is equals buffer 1\n");*/
111 
112     /*char string[10];
113     char *str1 = "abcdefghi";
114 
115     strncpy_s(string, str1, 3);
116     string[3] = '\0';
117 
118     printf_s("%s\n", string);*/
119 
120     /*char string[100] = "dhuiobnfvusbngvjhgbrjhb";//这里一定要是常量地址
121     char letter = 'x';
122 
123     printf("string before strnset: %s\n", string);
124     _strnset_s(string, letter, 10);//将一个字符串中的前10个字符变成x
125     printf("string after strnset: %s\n", string);*/
126 
127     /*char *string1 = "cbkcgbjhsdbghdghbgh";
128     char *string2 = "shj";
129     char *ptr;
130 
131     ptr = strpbrk(string1, string2);//查找第二个字符串中在第一个字符串第一次出现的字符
132 
133     if(ptr)
134     printf_s("strpbrk found first character: %c\n", *ptr);
135     else
136     printf_s("strpbrk didn't find character: %c\n");*/
137 
138     /*char string[20];
139     char *ptr, c = 'r';
140 
141     strcpy_s(string, "Thris is a string");
142     ptr = strrchr(string, c);//查找r最后一次出现的位置
143     if(ptr)
144     printf_s("The character %c is at position: %d\n", c, ptr - string);
145     else
146     printf_s("The character was not found\n");*/
147 
148     /*char forward[7] = "string";//这里一定是常量地址
149 
150     printf_s("Before strrev(): %s\n", forward);
151     _strrev(forward);//字符串反转
152     printf_s("After strrev(): %s\n", forward);*/
153 
154     /*char string[10] = "123456789";
155     char symbol = 'c';
156 
157     printf_s("Before strset(): %s\n", string);
158     _strset_s(string, symbol);//用特定字符替换字符串中的所有字符
159     printf_s("After strset(): %s\n", string);*/
160 
161     /*char *string1 = "1234567890";
162     char *string2 = "123DC8";
163     int length;
164 
165     length = strspn(string1, string2);//返回第一个不在指定字符串中出现的字符下标
166     printf_s("Character where strings differ is at position %d\n", length);*/
167 
168     /*char *str1 = "Borland Internationalvsdfvtsr", *str2 = "nation", *ptr;
169 
170     ptr = strstr(str1, str2);//找到特定字符串出现的位置,并将该位置之后的子字符串返回
171     printf_s("The substring is: %s\n", ptr);*/
172 
173     /*char input[80], *endptr;//endptr应该只是一个缓冲
174     double value;
175 
176     printf_s("Enter a floating point number:");
177     gets_s(input);
178     value = strtod(input, &endptr);//将字符串转换成double型值
179     printf_s("The string is %s the number is %lf\n", input, value);*/
180 
181     /*char input[16] = "abc,d,sdhj";
182     char *p;
183     char *next_token = NULL;
184 
185     p = strtok_s(input,",", &next_token);//切分
186     if(p)
187     printf_s("%s\n", p);
188 
189     p = strtok_s(NULL, ",", &next_token);
190     if(p)
191     printf_s("%s\n",p);
192 
193     p = strtok_s(NULL, ",", &next_token);
194     if(p)
195     printf_s("%s\n",p);*/
196 
197 
198     /*char *string = "87654321", *endstr;
199     long lnumber;
200 
201     lnumber = strtol(string, &endstr, 10);//将一个字符串转换成长整数
202     printf("string = %s long = %ld\n", string, lnumber);*/
203 
204     /*char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;
205     char *copy1, *copy2;
206     errno_t err;
207 
208     err = _strlwr_s( copy1 = _strdup(string), strlen(string) + 1);//转换为小写
209     err = _strupr_s( copy2 = _strdup(string), strlen(string) + 1);//转换为大写
210 
211     printf( "Mixed: %s\n", string );
212     printf( "Lower: %s\n", copy1 );
213     printf( "Upper: %s\n", copy2 );*/
214 
215     /*char from[] = "BADCFEHGJILKNMPORQTSVUXWZY";
216     char to[] =   "..........................";
217 
218     printf_s( "Before: %s\n        %s\n\n", from, to );
219     _swab( from, to, sizeof( from ) );//交换字节
220     printf_s( "After:  %s\n        %s\n\n", from, to );*/
221 
222     /*char *s = "Golden Global View";
223     char *l = "lob";
224     char *p;
225     
226     p = strstr(s, l);//找到l在s中第一次出现的位置,并将该位置及其以后的字符串传递给p
227     if(p)
228         printf_s("%s\n",p);
229     else
230         printf_s("Not Found!\n");*/
231 
232     return 0;
233 }

 

posted @ 2013-12-01 10:16  yiyi_xuechen  Views(606)  Comments(0Edit  收藏  举报