sscanf用法
参考链接1
参考链接2
sscanf来简单的提取用空格隔起来的字符串
int sscanf (const char *str,const char * format,........);
返回值是成功提取的格式化数据的个数,返回失败为-1
string s1,s2,s3;读到的%s字符串不让用string来承接
也是,char数组字符串的分割有strtok,sscanf
string字符串可以利用algorithm里的函数substr,或者直接构造函数
string s(str,begin,len); s=str.substr(begin,len),
不方便在有时确定不了len,start倒是可以边截取边计数
#include <iostream>
using namespace std;
int main(){
int cnt=0;
char buf1[255], buf2[255], buf3[255],buf4[255];
cnt=sscanf("how are you","%s %s %s",buf1,buf2,buf3);
cout<<cnt<<" "<<buf1<<"-"<<buf2<<"-"<<buf3<<endl;
int y=-1,m=-1,d=-1;
cnt=sscanf("2022.1.24","%d.%d.%d", &y,&m,&d);
cout<<cnt<<" "<<y<<"-"<<m<<"-"<<d<<endl;
sscanf("今天是个好日子", "%5s", buf4);
cout<<buf4<<endl;
sscanf("123456 abcdANFS","%[0-9] %[a-z]%[A-Z]",buf1,buf2,buf3);
cout<<buf1<<"-"<<buf2<<"-"<<buf3<<endl;
for (int i = 0; i < 10; i++) buf1[i] = '!';
sscanf("AAAaaaBBB","%[a-z]",buf1);
cout<<buf1<<endl;
sscanf("12bc34ed$56adf","%[^$]",buf1);
cout<<buf1<<endl;
sscanf("123456abcdedfBCDEF","%[^A-Z]", buf1);
cout<<buf1<<endl;
sscanf("abcd1234AC!","%*[a-z]%[^A-Z!]",buf1);
cout<<buf1<<endl;
sscanf("abcd1234AC!","%*[a-d1-9]%[^1-9!]",buf1);
cout<<buf1<<endl;
sscanf("hello, life 123","%*s%s%d",buf1);
cout<<buf1<<endl;
return 0;
}