字符串操作
头文件:<cstring>。printf和scanf在<cstdio>中,cin和cout在头文件<iostream>中且位于std命名空间内。
下面假设待处理的字符串为str和str2,即:char str[MAX], str2[MAX];
牢记,字符串的最后一个字符一定是‘\0‘。如果字符串内没有‘\0‘,进行以下操作(输入除外)时可能会造成意外事故。
? cout<<str;
? printf("%s",str); // 输出到文件:fprintf(fout, "%s", str);
? scanf("%s", str); // 输出到文件:fscanf(fin, "%s", str);
? cin>>str;
以上两种方法在输入时会忽略空格、回车、TAB等字符,并且在一个或多个非空格字符后面输入空格时,会终止输入。
?
fgets(str, MAX, fin);
每调用一次,就会读取一行的内容(即不断读取,直到遇到回车停止)。
? str的空间必须足够大,能够容纳连接之后的结果。
? 连接的结果直接保存到str里。函数返回值为&str[0]。
? strncat(str, str2, n)是把str2的前n个字符连接到str的末尾。
? 返回值是一个指针,表示str2在str中的位置。用strstr的返回值减str,就是具体的索引位置。
? 此问题可以用KMP算法解决。KMP算法很复杂,在NOIP范围内用途不大。
原文:http://www.cnblogs.com/jjzzx/p/5100568.html