字符串操作! 头文件:<cstring>。printf和scanf在<cstdio>中,cin和cout在头文件<iostream>中且位于 std命名空间内。 下面假设待处理的字符串为str和str2,即:charstr[MAX], str2[MAX]; 牢记,字符串的最后一个字符一定是'\0'。如果字符串内没有'\0',进行以下操作(输入除外)时可能 会造成意外事故。 1.输出字符串str: cout<<str; printf("%s",str); // 输出到文件:fprintf(fout,"%s", str); 2. 输入字符串str: scanf("%s", str); // 输出到文件:fscanf(fin,"%s", str); cin>>str; 以上两种方法在输入时会忽略空格、回车、TAB等字符,并且在一个或多个非空格字符后面输入空格时,会终止输入。 fgets(str, MAX, fin); 每调用一次,就会读取一行的内容(即不断读取,直到遇到回车停止)。 3. 求字符串str的长度:strlen(str) // 这个长度不包括末尾的'\0'。 4. 把字符串str2连接到字符串str的末尾:strcat(str,str2) str的空间必须足够大,能够容纳连接之后的结果。 连接的结果直接保存到str里。函数返回值为&str[0]。 strncat(str, str2, n)是把str2的前n个字符连接到str的末尾。 5. 把字符串str2复制到字符串str中:strcpy(str,str2) 6. 比较str和str2的大小:strcmp(str, str2) 如果str>str2,返回1;如果str==str2,返回0;如果str<str2,返回-1。 7. 在str中寻找一个字符c:strchr(str,c) 返回值是一个指针,表示c在str中的位置。用strchr的返回值减str,就是具体的索引位置。 8. 在str中寻找str2:strstr(str, str2) 返回值是一个指针,表示str2在str中的位置。用strstr的返回值减str,就是具体的索引位置。 此问题可以用KMP算法解决。KMP算法很复杂,在NOIP范围内用途不大。 9. 从str中获取数据:sscanf(str,"%d", &i); 格式化字符串:sprintf(str,"%d", i); 它们和fscanf、fprintf非常像,用法也类似。可以通过这两个函数进行数值与字符串之间的转换。
|