这是一段关键代码
创新互联建站专业提供成都主机托管四川主机托管成都服务器托管四川服务器托管,支持按月付款!我们的承诺:贵族品质、平民价格,机房位于中国电信/网通/移动机房,服务器机柜租赁服务有保障!
int i=0;
char ch[50];
fflush(stdin);//清除缓冲区
while((ch[i]=getchar())!='\n')
//当输入字符不是回车是逐个截取字符
i++;
应该是这个意思吧,输入一串字符然后逐个存入字符数组中。
c语言标准库函数中是没有substr函数的,除非你自定义实现。
c++语言标准库中的string类包含了一个substr函数。
在MSDN中,关于该函数的描述如下:
函数原型:
basic_string substr(size_type pos = 0, size_type n = npos) const;
功能描述:
The member function returns an object whose controlled sequence is a copy of
up to n elements of the controlled sequence beginning at position pos.
该函数返回一个包含了当前字符串从pos位置开始到第n个字符的子串对象副本。
函数参数:
pos 字符串截取的开始位置,从0开始计数。
n截取的字符长度,如果大于当前字符串可截取的有效字符长度,则默认截取有效长度
举例如下:
#include stdlib.h
#include string
using namespace std;
int main()
{
string sTest = "This is a test!";
string sSub = sTest.substr(0, 4);
printf("%s\n%d", sSub.c_str());
return 0;
}
根据单个分隔字符用split截取
string st="GT123_1";
string[] sArray=st.split("_");
即可得到sArray[0]="GT123",sArray[1]="1";
2.利用多个字符来分隔字符串
tring str = "GTAZB_JiangjBen_123";
string[] sArray = str.Split(new char[2] { 'j', '_' });
foreach(string e in sArray)
{
Console.WriteLine(e);
}
得到sArray[0]="GTAZB",sArray[1]="Jiang",sArray[2]="Ben",sArray[3]="123";
3根据字符串或字符串组来截取字符串
string str = "GTAZB_JiangjBen_123";
string[] sArray = str.Split( new string[]{"Ji","jB"}, StringSplitOptions.RemoveEmptyEntries);
foreach(string e in sArray)
{
Console.WriteLine(e);
}
得到sArray[0]="GTAZB_",sArray[1]="ang",sArray[2]="en_123";
4提取字符串中的第i个字符开始的长度为j的字符串;
string str = "GTAZB_JiangjBen_123";
int start=3,length=8;
Console.WriteLine(str.Substring(start-1, length));
你的a.substr(0.2);应该改为:a.substr(0,2);
basic_string::substr
basic_string substr(size_type _Off = 0,size_type _Count = npos) const;
功能:从一个字符串复制一个从指定位置开始,并具有指定长度的子字符串。
参数
_Off
所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0.
_Count
复制的字符数目
返回值
一个子字符串,从其指定的位置开始
备注
如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾。
示例
下面的示例阐释了 substr 方法的用法。
function SubstrDemo(){
var s, ss; //Declare variables.
var s = "The rain in Spain falls mainly in the plain.";
ss = s.substr(12, 5); //Get substring.
return(ss); // Returns "Spain".
---------------------------------------------------------------
s.substr(12)的结果是 Spain falls mainly in the plain.
strncpy 是 C语言的库函数之一,来自 C语言标准库,定义于 string.h,char *strncpy(char *dest, char *src, int n),把src所指字符串的前n个字节复制到dest所指的数组中,并返回指向dest的指针。
函数原型char*strncpy(char*dest,char*src,size_tn);
复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_tn的值决定。如果src的前n个字节不含NULL字
符,则结果不会以NULL字符结束。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。src和dest所指内存区域不可以重
叠且dest必须有足够的空间来容纳src的字符长度+'\0'。
atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。
功 能: 将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。
用 法: int atoi(const char *nptr);
如果是浮点数或者其他类型可以使用atof,sscanf函数来进行字符串到数值的转换。
例如:atoi(strncpy(dest,src+5,10))//把src字符串从第五位开始数10个的字符串转换为一个int值。
C标准库中提供了一个字符串分割函数strtok();
实现代码如下:
#include stdio.h
#include string.h
#define MAXSIZE 1024
int main(int argc, char * argv[])
{
char dates[MAXSIZE] = "$GPGGA,045950.00,A,3958.46258,N,11620.55662,E,0.115,,070511,,,A*76 ";
char *delim = ",";
char *p;
printf("%s ",strtok(dates,delim));
while(p = strtok(NULL,delim))
{
printf("%s ",p);
}
printf("\n");
return 0;
}
运行结果截图如下: