c语言substr函数? substr()函数用法详解
大家好,今天小编来为大家解答c语言substr函数这个问题, substr()函数用法详解很多人还不知道,现在让我们一起来看看吧!
c语言中string是啥意思啊控制啥的啊
编程语言中的字符串,用双引号引起来的几个字符.如"Abc","一天"。String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象。
这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。
strings1,s2;
s1="abc";
s2=s1;
s2="def";
1、用法
string类的构造函数:
string(constchar*s);//用c字符串s初始化string(intn,charc);//用n个字符c初始化
此外,string类还支持默认构造函数和复制构造函数,如strings1;strings2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常。
2、string类的字符操作:
constchar&operator[](intn)const;constchar&at(intn)const;char&operator[](intn);char&at(intn);
operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。
constchar*data()const;//返回一个非null终止的c字符数组constchar*c_str()const;//返回一个以null终止的c字符串
intcopy(char*s,intn,intpos=0)const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目。
扩展资料:
1、string的特性描述:
intcapacity()const;//返回当前容量(即string中不必增加内存即可存放的元素个数)
intmax_size()const;//返回string对象中可存放的最大字符串的长度
intsize()const;//返回当前字符串的大小
intlength()const;//返回当前字符串的长度
boolempty()const;//当前字符串是否为空
voidresize(intlen,charc);//把字符串当前大小置为len,并用字符c填充不足的部分
2、string类的输入输出操作:
string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作。函数getline(istream&in,string&s);用于从输入流in中读取字符串到s中,以换行符'
'分开。
3、string的赋值:
string&operator=(conststring&s);//把字符串s赋给当前字符串
string&assign(constchar*s);//用c类型字符串s赋值
string&assign(constchar*s,intn);//用c字符串s开始的n个字符赋值
string&assign(conststring&s);//把字符串s赋给当前字符串
string&assign(intn,charc);//用n个字符c赋值给当前字符串
string&assign(conststring&s,intstart,intn);//把字符串s中从start开始的n个字符赋给当前字符
string&assign(const_iteratorfirst,const_itertorlast);//把first和last迭代器之间的部分赋给字符串
4、string的连接:
string&operator+=(conststring&s);//把字符串s连接到当前字符串的结尾
string&append(constchar*s);//把c类型字符串s连接到当前字符串结尾
string&append(constchar*s,intn);//把c类型字符串s的前n个字符连接到当前字符串结尾
string&append(conststring&s);//同operator+=()
string&append(conststring&s,intpos,intn);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾
string&append(intn,charc);//在当前字符串结尾添加n个字符c
string&append(const_iteratorfirst,const_iteratorlast);//把迭代器first和last之间的部分连接到当前字符串的结尾
5、string的子串:
stringsubstr(intpos=0,intn=npos)const;//返回pos开始的n个字符组成的字符串
6、string的交换:
voidswap(string&s2);//交换当前字符串与s2的值
7、string类的查找函数:
intfind(charc,intpos=0)const;//从pos开始查找字符c在当前字符串的位置
intfind(constchar*s,intpos=0)const;//从pos开始查找字符串s在当前串中的位置
intfind(constchar*s,intpos,intn)const;//从pos开始查找字符串s中前n个字符在当前串中的位置
intfind(conststring&s,intpos=0)const;//从pos开始查找字符串s在当前串中的位置//查找成功时返回所在位置,失败返回string::npos的值
intrfind(charc,intpos=npos)const;//从pos开始从后向前查找字符c在当前串中的位置
intrfind(constchar*s,intpos=npos)const;
intrfind(constchar*s,intpos,intn=npos)const;
intrfind(conststring&s,intpos=npos)const;//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值
intfind_first_of(charc,intpos=0)const;//从pos开始查找字符c第一次出现的位置
intfind_first_of(constchar*s,intpos=0)const;
intfind_first_of(constchar*s,intpos,intn)const;
intfind_first_of(conststring&s,intpos=0)const;//从pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回string::npos
intfind_first_not_of(charc,intpos=0)const;
intfind_first_not_of(constchar*s,intpos=0)const;
intfind_first_not_of(constchar*s,intpos,intn)const;
intfind_first_not_of(conststring&s,intpos=0)const;//从当前串中查找第一个不在串s中的字符出现的位置,失败返回string::npos
intfind_last_of(charc,intpos=npos)const;
intfind_last_of(constchar*s,intpos=npos)const;
intfind_last_of(constchar*s,intpos,intn=npos)const;
intfind_last_of(conststring&s,intpos=npos)const;
intfind_last_not_of(charc,intpos=npos)const;
intfind_last_not_of(constchar*s,intpos=npos)const;
intfind_last_not_of(constchar*s,intpos,intn)const;
intfind_last_not_of(conststring&s,intpos=npos)const;//find_last_of和find_last_not_of与find_first_of和find_first_not_of相似,只不过是从后向前查找。
string类的替换函数:
string&replace(intp0,intn0,constchar*s);//删除从p0开始的n0个字符,然后在p0处插入串s
string&replace(intp0,intn0,constchar*s,intn);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符
string&replace(intp0,intn0,conststring&s);//删除从p0开始的n0个字符,然后在p0处插入串s
string&replace(intp0,intn0,conststring&s,intpos,intn);//删除p0开始的n0个字符,然后在p0处插入串s中从pos开始的n个字符
string&replace(intp0,intn0,intn,charc);//删除p0开始的n0个字符,然后在p0处插入n个字符c
string&replace(iteratorfirst0,iteratorlast0,constchar*s);//把[first0,last0)之间的部分替换为字符串s
string&replace(iteratorfirst0,iteratorlast0,constchar*s,intn);//把[first0,last0)之间的部分替换为s的前n个字符。
string&replace(iteratorfirst0,iteratorlast0,conststring&s);//把[first0,last0)之间的部分替换为串s
string&replace(iteratorfirst0,iteratorlast0,intn,charc);//把[first0,last0)之间的部分替换为n个字符c
string&replace(iteratorfirst0,iteratorlast0,const_iteratorfirst,const_iteratorlast);//把[first0,last0)之间的部分替换成[first,last)之间的字符串。
string类的插入函数:
string&insert(intp0,constchar*s);
string&insert(intp0,constchar*s,intn);
string&insert(intp0,conststring&s);
string&insert(intp0,conststring&s,intpos,intn);//前4个函数在p0位置插入字符串s中pos开始的前n个字符
string&insert(intp0,intn,charc);//此函数在p0处插入n个字符c
iteratorinsert(iteratorit,charc);//在it处插入字符c,返回插入后迭代器的位置
voidinsert(iteratorit,const_iteratorfirst,const_iteratorlast);//在it处插入[first,last)之间的字符
voidinsert(iteratorit,intn,charc);//在it处插入n个字符c
string类的删除函数
iteratorerase(iteratorfirst,iteratorlast);//删除[first,last)之间的所有字符,返回删除后迭代器的位置。
iteratorerase(iteratorit);//删除it指向的字符,返回删除后迭代器的位置。
string&erase(intpos=0,intn=npos);//删除pos开始的n个字符,返回修改后的字符串。
string类的迭代器处理:
string类提供了向前和向后遍历的迭代器iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。
用string::iterator或string::const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。常用迭代器函数有:
const_iteratorbegin()const;iteratorbegin();//返回string的起始位置
const_iteratorend()const;iteratorend();//返回string的最后一个字符后面的位置
const_iteratorrbegin()const;iteratorrbegin();//返回string的最后一个字符的位置
const_iteratorrend()const;iteratorrend();//返回string第一个字符位置的前面
rbegin和rend用于从后向前的迭代访问,通过设置迭代器string::reverse_iterator或string::const_reverse_iterator实现
字符串流处理:
通过定义ostringstream和istringstream变量实现,在#include<sstream>头文件中。
例如:
stringinput("hello,thisisatest");
istringstreamis(input);
strings1,s2,s3,s4;
is>>s1>>s2>>s3>>s4;//s1="hello,this",s2="is",s3="a",s4="test"
ostringstreamos;
os<<s1<<s2<<s3<<s4;
cout<<os.str();
参考资料:
百度百科——string
pascal语言知识询问
程序中用来表示如物品件数和物品单价等属性相同的有序数据,Pascal语言把它归为数组。数组成员(分量)称为数组元素。数组必须在说明部分进行定义:确定数组名,数组分量(元素)的个数及类型。一般格式有:
Var数组名:array[下标类型] of数组元素类型;
数组常量说明格式为:
Const数组名:array[下标类型]of数组元素类型=(常量表);
程序中对数组的输入、输出处理,常用循环语句控制下标,进行有序地直接操作每个数组元素。
算术标准函数:
(1) abs(x)求x的绝对值(|x|);
(2) exp(x)求ex的值;(e为无理数2.71828…)
(3) frac(x)求x的小数部分;
(4) int(x)求x的整数部分(不舍入,函数值为实型);
(5) ln(x)求以e为底的x的对数(log ex);
(6) odd(x)判断x的奇偶数(当x为奇数时odd(x)值为true,否则为false);
(7) ord(x)求x的序号,结果为整型(x为有序类型量);
(8) piπ值(3.1415926535897932…);
(9) pred(x)求x(有序类型)的前趋值;
(10) succ(x)求x(有序类型)的后继值;
(11) random随机函数,产生0~1的随机值;
(12) random(n)产生0~n的随机数(n为word类型,先执行randomize,才能得到随机整数);
(13) round(x)求x的四舍五入整数;
(14) trunc(x)求x的整数部分(截掉小数部分,结果为整型);
(15) sqr(x)求x的平方值(x2);
(16) sqrt(x)求x的开平方根值();
(17) sin(x)求x的正弦函数(x为弧度);
(18) cox(x)求x的余弦函数(x为弧度);
(19) arctan(x)正切的反三角函数(x为数值);
字符串函数:
求长度length
定义:function Length(S: String): Integer;
例子:
var
S: String;
begin
Readln(S);
Writeln('"', S,'"');
Writeln('length=', Length(S));
end.
复制子串copy
定义: function Copy(S: String; Index: Integer; Count: Integer): String;
注意:S是字符串类型的表达式。Index和Count是整型表达式。Copy返回S中从Index开始,Count个字符长的一个子串。
例子:
var S: String;
begin
S:='ABCDEF';
S:= Copy(S, 2, 3);{'BCD'}
end.
插入子串insert
定义:procedure Insert(Source: String; var S: String; Index: Integer);
注意:Source是字符串类型的表达式。 S是任意长度字符串类型变量。Index是整型表达式。Insert把 Source插在S中Index处。如果结果字符串的长度大于255,那么255之后的字符将被删除。
例子:
var
S: String;
begin
S:='Honest Lincoln';
Insert('Abe', S, 8);{'Honest Abe Lincoln'}
end.
删除子串delete
定义:procedure Delete(var S: String; Index: Integer; Count:Integer);
注意:S是字符串类型变量。 Index和Countare是整型表达式。Delete删除S中从Index开始的Count个字符。如果Index大于S的长度,则不删除任何字符;如果Count大于S中从Index开始的实际字符数,则删除实际的字符数。
例子:
var
s: string;
begin
s:='Honest Abe Lincoln';
Delete(s,8,4);
Writeln(s);{'Honest Lincoln'}
Delete(s,9,10);
Writeln(s);{'Honest L'}
end.
字符串转为数值val
定义: procedure Val(S; var V; var Code: Integer);
在这里:
S是由一系列数字字符构成的字符串类型变量;。
V是整型或实型变量;
Code是Integer型变量
注意:Val将S转为它的数值形式。
例子:
var s:string;I, Code: Integer;
begin
s:='1234';
val(s,i,code);
writeln(i);{ 1234}
end.
数值转为字符串str
定义: procedure Str(X [: Width [: Decimals ]]; var S:string);
注意:将数值X转成字符串形式。
例子:
var
S: string[11];
begin
Str(I, S);
IntToStr:= S;
end;
begin
Writeln(IntToStr(-5322));
Readln;
end.
求子串起始位置pos
定义:function Pos(Substr: String; S: String): Byte;
注意:Substr和S字符串类型表达式。Pos在S中搜索Substr并返回一个integer值。这个值是Substr的第一个字符在S中的位置。如果在S中没有找到Substr,则Pos返回0。
例子:
var S: String;
begin
S:=' 123.5';
{ Convert spaces to zeroes}
while Pos('', S)> 0 do
S[Pos('', S)]:='0';
end.
字符完全串连+
定义:操作符+把两个字符串联在一起。
例子:
var s1,s2,s:string;
begin
s1:='Turbo';
s2:='pascal';
s:=s1+s2;{'Turbo pascal'}
end.
字符串压缩空格串连-
定义:操作符-去掉第一个字符串最后的空格后,将两个字符串联在一起。
例子:
var s1,s2,s:string;
begin
s1:='Turbo';
s2:='pascal';
s:=s1-s2;{'Turbopascal'}
end.
以上都是常用的函数。
for循环是一种自动计数型循环。
for循环语句有两种格式:
(1) for循环变量:=初值 To终值 do语句;
(2) for循环变量:=初值downto终值 do语句;
第(1)种格式的初值小于等于终值,循环变量值按自动加1递增变化;
第(2)种格式的初值大于或等于终值,循环变量值按自动减1递减变化。for循环是(以递增1或以递减1)计数型循环。
Repeat循环是直到型循环。
程序中的Repeat循环格式为:
repeat
循环体语句;
until条件表达式;{直到条件为真}
Repeat循环首先执行由Repeat和Until括起来的循环体语句,然后检查Until后面的条件表达式:如果表达式结果为假,则继续执行循环体,接着继续检查Until后面的条件表达式,如此反复执行直到这个表达式结果为真时结束循环。Repeat循环体语句必须有能改变Until后面条件表达式值的语句,并最终使这个条件表达式的值为真,使循环自动结束。
While循环是当型循环。
While循环语句的格式:
While条件式 do语句;
其中do后面的“语句”是被重复执行的,称为循环体;若循环体是多个语句,必须用begin--end包起来成为复合语句。
While循环首先判断条件式,当条件式的值为真就执行do后面的语句(循环体)。
While的循环体内也必须包含能改变控制变量取值语句,影响条件式的值,最终使条件式为false(假),才能结束循环。
希望对你有帮助。
请问sas中scan函数如何使用
scan函数: scan(s,n,"char")表示从字串string中以char为分隔符提取第n个字串。
功能(function):从字符表达式s中搜取给定的n个单词
语法(syntax)
1、scan(s,n) n为正数时,从字符s末尾提取n个字符
2、scan(s,n) n为负数时,从字符s开始提取n个字符
3、scan(s,n<,list-of-delimiters>)
如果指定分隔符,则只会按照该分隔符提取。如果不指定,则按照常用的分隔符拆分,默认分隔符为:空格.<(+&!$*); ^-/,%|等之一或组合。
扩展资料
注意事项:
1、如果缺失指定的生成变量的长度,系统默认长度为200。
2、如果|n|=0或大于字符s的长度,则该函数返回空格。
3、用于读入纯字符或者数字,没有表头;
4、如果输入的单一类型的变量,例如均是:数值或者均是字符,用scan效率更高。但其不能读入混合类型的数据,也就是在scan()读入的必须同为字符或者同为数值;
5、默认情况下用scan读入的数据生成向量类型(这也就是为什么读入的数据必须是同为字符或者同为数字)。
文章到此结束,如果本次分享的c语言substr函数和 substr()函数用法详解的问题解决了您的问题,那么我们由衷的感到高兴!