美文网首页
常用字符串操作

常用字符串操作

作者: 乘瓠散人 | 来源:发表于2021-04-20 15:22 被阅读0次
  1. C语言中字符串的灵活性:
  • 可以把任意“指向字符的指针”看成是字符串,从该位置开始,直到字符“\0”.
    eg. 若s="(11,LL)",则&s[1]对应的字符串是11,LL).
    eg. 函数strchr(s,',')返回字符串s中从左往右的第一个字符','的指针,因此strchr(s,',')+1所对应的字符串是LL).
  • 如果想要让字符串下标从1开始输入,则
#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;

int main()
{
    char s1[205];
    scanf("%s",s1+1);
    int len=strlen(s1+1);  //字符个数
    for(int i=1;i<=len;i++)
        cout<<s1[i];
    return 0;
}
  1. C++在string头文件中定义了string类型,支持流式读写。string有很多方便的函数和运算符,但是速度慢。
#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main()
{
    string line;
    while(getline(cin,line))
    {
        int sum=0, x;
        stringstream ss(line);
        while(ss >> x) sum+=x;
        cout<<sum<<endl;
    }
    return 0;
}

string类在<string>头文件中,stringstream在sstream头文件中。
首先用getline函数读取一行数据(相当于C语言中fgets,但由于使用string类,无须指定字符串的最大长度),然后用这一行创建一个字符串流ss,接下来只需像读取cin那样读取ss即可。

  1. 常用字符串处理函数
  • strncpy: 复制字符串的子串
    char* strncpy(char* dest, const char * src, size_t n );
    将src串的前n个字符复制到dest串中,返回结果与dest相同。
  • strcpy: 复制整个字符串到另一个字符数组
    char* strcpy(char* dest, const char* src);
  • strstr: 在字符串str1中寻找子字符串str2,如果有返回相应位置的指针,没有返回NULL
    char* strstr(char* str1, char* str2);
  • strchr: 在字符串中查找字符,成功返回该字符首次出现的位置,失败返回NULL
    char* strchr(const char *s,char c);
  1. gets(s)函数
    gets()函数用来从标准设备读取字符串直到换行符结束,但是换行符会被丢弃,然后在末尾添加'\0'字符。而scanf遇到空格就会认为当前字符串结束
    gets()遇到'\n'停止读取,不会把'\n'包含到字符串里,但是其对应的puts()函数却在输出字符串时会自动换行
sprintf(buf, "%d%d%d%d%d", abc,de,x,y,z);  //输入到缓冲区buf
sscanf(s, "%lf %d", &p, &q); //从s读取p,q

atof(str) 将字符串转成浮点数
atoi(str) 将字符串转成整数
头文件<stdlib.h>

#define BUFLEN 256
static char linebuf[BUFLEN];
fgets(linebuf,BUFLEN,fin); //读取一行数据,可以有空格
sscanf(linebuf,"%s %s %s",tokenString,typeString,lineMsg);

C++小数后保留2位
cout<<fixed<<setprecision(2)<<ans<<endl; 头文件为<iomanip>
C小数后保留2位
printf("%.2f\n",ans);

相关文章

网友评论

      本文标题:常用字符串操作

      本文链接:https://www.haomeiwen.com/subject/wkkhhftx.html