您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ vStringPut函数代码示例

51自学网 2021-06-03 09:31:29
  C++
这篇教程C++ vStringPut函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中vStringPut函数的典型用法代码示例。如果您正苦于以下问题:C++ vStringPut函数的具体用法?C++ vStringPut怎么用?C++ vStringPut使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了vStringPut函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: readIdentifier

/* Algorithm adapted from from GNU etags. * Scheme tag functions * look for (def... xyzzy * look for (def... (xyzzy * look for (def ... ((... (xyzzy .... * look for (set! xyzzy */static void readIdentifier (vString *const name, const unsigned char *cp){	const unsigned char *p;	vStringClear (name);	/* Go till you get to white space or a syntactic break */	for (p = cp; *p != '/0' && *p != '(' && *p != ')' && !isspace (*p); p++)		vStringPut (name, (int) *p);}
开发者ID:qzhuyan,项目名称:ctags,代码行数:15,


示例2: readIdentifier

static void readIdentifier (lexingState * st){	const unsigned char *p;	vStringClear (st->name);	/* first char is a simple letter */	if (isAlpha (*st->cp) || *st->cp == '_')		vStringPut (st->name, (int) *st->cp);	/* Go till you get identifier chars */	for (p = st->cp + 1; isIdent (*p); p++)		vStringPut (st->name, (int) *p);	st->cp = p;	vStringTerminate (st->name);}
开发者ID:b4n,项目名称:fishman-ctags,代码行数:17,


示例3: parseLet

static void parseLet (const unsigned char *line, int infunction){	vString *name = vStringNew ();	const unsigned char *cp = line;	const unsigned char *np = line;	/* get the name */	if (isspace ((int) *cp))	{		while (*cp && isspace ((int) *cp))			++cp;		/* 		 * Ignore lets which set:		 *    &  - local buffer vim settings		 *    @  - registers		 *    [  - Lists or Dictionaries		 */		if (!*cp || *cp == '&' || *cp == '@' || *cp == '[' )			goto cleanUp;		/* 		 * Ignore vim variables which are read only		 *    v: - Vim variables.		 */		np = cp;		++np;		if ((int) *cp == 'v' && (int) *np == ':' )			goto cleanUp;		/* Skip non-global vars in functions */		if (infunction && (int) *cp != 'g')			goto cleanUp;		/* deal with spaces, $, @ and & */		while (*cp && *cp != '$' && !isalnum ((int) *cp))			++cp;		if (!*cp)			goto cleanUp;		/* cp = skipPrefix (cp, &scope); */		do		{			if (!*cp)				break;			vStringPut (name, (int) *cp);			++cp;		} while (isalnum ((int) *cp)  ||  *cp == '_'  ||  *cp == '#'  ||  *cp == ':'  ||  *cp == '$');		vStringTerminate (name);		makeSimpleTag (name, VimKinds, K_VARIABLE);		vStringClear (name);	}cleanUp:	vStringDelete (name);}
开发者ID:Monits,项目名称:ctags,代码行数:58,


示例4: makeJsTag

static void makeJsTag (tokenInfo *const token, const jsKind kind, vString *const signature){	if (JsKinds [kind].enabled && ! token->ignoreTag )	{		const char *name = vStringValue (token->string);		vString *fullscope = vStringNewCopy (token->scope);		const char *p;		tagEntryInfo e;		if ((p = strrchr (name, '.')) != NULL)		{			if (vStringLength (fullscope) > 0)				vStringPut (fullscope, '.');			vStringNCatS (fullscope, name, p - name);			name = p + 1;		}		initTagEntry (&e, name);		e.lineNumber   = token->lineNumber;		e.filePosition = token->filePosition;		e.kindName	   = JsKinds [kind].name;		e.kind		   = JsKinds [kind].letter;		if ( vStringLength(fullscope) > 0 )		{			jsKind parent_kind = JSTAG_CLASS;			/* if we're creating a function (and not a method),			 * guess we're inside another function */			if (kind == JSTAG_FUNCTION)				parent_kind = JSTAG_FUNCTION;			e.extensionFields.scope[0] = JsKinds [parent_kind].name;			e.extensionFields.scope[1] = vStringValue (fullscope);		}		if (signature && vStringLength(signature))		{			size_t i;			/* sanitize signature by replacing all control characters with a			 * space (because it's simple).			 * there should never be any junk in a valid signature, but who			 * knows what the user wrote and CTags doesn't cope well with weird			 * characters. */			for (i = 0; i < signature->length; i++)			{				unsigned char c = (unsigned char) signature->buffer[i];				if (c < 0x20 /* below space */ || c == 0x7F /* DEL */)					signature->buffer[i] = ' ';			}			e.extensionFields.arglist = vStringValue(signature);		}		makeTagEntry (&e);		vStringDelete (fullscope);	}}
开发者ID:BenWiederhake,项目名称:geany,代码行数:58,


示例5: while

/* Match the name of a tag (function, variable, type, ...) starting at pos. */static char const *extract_name (char const *pos, vString * name){	while (isspace (*pos))		pos++;	vStringClear (name);	for (; *pos && !isspace (*pos) && *pos != '(' && *pos != ',' && *pos != '='; pos++)		vStringPut (name, *pos);	return pos;}
开发者ID:ParrotSec,项目名称:geany,代码行数:10,


示例6: scanIdentifier

static void scanIdentifier (lexerState *lexer){	vStringClear(lexer->token_str);	do	{		vStringPut(lexer->token_str, (char) lexer->cur_c);		advanceChar(lexer);	} while(lexer->cur_c != EOF && isIdentifierContinue(lexer->cur_c));}
开发者ID:TheGameCreators,项目名称:AGKIDE,代码行数:9,


示例7: parseClassOrIface

/* parses a class or an interface: * 	class Foo {} * 	class Foo extends Bar {} * 	class Foo extends Bar implements iFoo, iBar {} * 	interface iFoo {} * 	interface iBar extends iFoo {} * * if @name is not NULL, parses an anonymous class with name @name * 	new class {} * 	new class(1, 2) {} * 	new class(1, 2) extends Foo implements iFoo, iBar {} */static boolean parseClassOrIface (tokenInfo *const token, const phpKind kind,                                  const tokenInfo *name){	boolean readNext = TRUE;	implType impl = CurrentStatement.impl;	tokenInfo *nameFree = NULL;	vString *inheritance = NULL;	readToken (token);	if (name) /* anonymous class */	{		/* skip possible construction arguments */		skipOverParens (token);	}	else /* normal, named class */	{		if (token->type != TOKEN_IDENTIFIER)			return FALSE;		name = nameFree = newToken ();		copyToken (nameFree, token, TRUE);		readToken (token);	}	inheritance = vStringNew ();	/* read every identifiers, keywords and commas, and assume each	 *  identifier (not keyword) is an inheritance	 * (like in "class Foo extends Bar implements iA, iB") */	while (token->type == TOKEN_IDENTIFIER ||	       token->type == TOKEN_KEYWORD ||	       token->type == TOKEN_COMMA)	{		if (token->type == TOKEN_IDENTIFIER)		{			if (vStringLength (inheritance) > 0)				vStringPut (inheritance, ',');			vStringCat (inheritance, token->string);		}		readToken (token);	}	makeClassOrIfaceTag (kind, name, inheritance, impl);	if (token->type == TOKEN_OPEN_CURLY)		enterScope (token, name->string, kind);	else		readNext = FALSE;	if (nameFree)		deleteToken (nameFree);	vStringDelete (inheritance);	return readNext;}
开发者ID:blackb1rd,项目名称:ctags,代码行数:67,


示例8: parseSelector

static void parseSelector (vString *const string, const int firstChar){	int c = firstChar;	do	{		vStringPut (string, (char) c);		c = getcFromInputFile ();	} while (isSelectorChar (c));	ungetcToInputFile (c);}
开发者ID:pjkack,项目名称:ctags,代码行数:10,


示例9: parseString

static void parseString (vString * const string, const int delimiter){	bool end = false;	while (!end)	{		int c = getcFromInputFile ();		if (c == EOF)			end = true;		else if (c == '//')		{			c = getcFromInputFile ();	/* This maybe a ' or ". */			vStringPut (string, c);		}		else if (c == delimiter)			end = true;		else			vStringPut (string, c);	}}
开发者ID:pragmaware,项目名称:ctags,代码行数:19,


示例10: parseTemplateString

static void parseTemplateString (vString *const string){	int c;	do	{		c = fileGetc ();		if (c == '`')			break;		vStringPut (string, c);		if (c == '//')		{			c = fileGetc();			vStringPut(string, c);		}		else if (c == '$')		{			c = fileGetc ();			if (c != '{')				fileUngetc (c);			else			{				int depth = 1;				/* we need to use the real token machinery to handle strings,				 * comments, regexes and whatnot */				tokenInfo *token = newToken ();				LastTokenType = TOKEN_UNDEFINED;				vStringPut(string, c);				do				{					readTokenFull (token, FALSE, string);					if (isType (token, TOKEN_OPEN_CURLY))						depth++;					else if (isType (token, TOKEN_CLOSE_CURLY))						depth--;				}				while (! isType (token, TOKEN_EOF) && depth > 0);				deleteToken (token);			}		}	}	while (c != EOF);	vStringTerminate (string);}
开发者ID:ruchee,项目名称:ctags,代码行数:43,


示例11: add_tag

static void add_tag(const char *token, haskellKind kind, vString *name){    int i;    for (i = 0; token[i] != '/0'; ++i)	vStringPut(name, token[i]);    vStringTerminate(name);    makeSimpleTag(name, HaskellKinds, kind);    vStringClear(name);}
开发者ID:max630,项目名称:ctags,代码行数:10,


示例12: readIdentifier

/*  Reads an identifier, whose first character is given by "c", into "tag", *  together with the file location and corresponding line number. */static void readIdentifier (int c, vString *const name){	vStringClear (name);	do	{		vStringPut (name, c);		c = getcAndCollect ();	} while (c != EOF && cppIsident (c));	ungetcAndCollect (c);}
开发者ID:StefanOberhumer,项目名称:geany,代码行数:13,


示例13: pushScope

static void pushScope (tokenInfo *const token,					   const tokenInfo *const parent,					   const jsonKind parentKind){	if (vStringLength (token->scope) > 0)		vStringPut (token->scope, '.');	vStringCat (token->scope, parent->string);	vStringTerminate (token->scope);	token->scopeKind = parentKind;}
开发者ID:FabianInostroza,项目名称:geany,代码行数:10,


示例14: readAndEmitTag

static void readAndEmitTag (const unsigned char** cp, rubyKind expected_kind){	if (isspace (**cp))	{		vString *name = vStringNew ();		vString *chunk = vStringNew ();		rubyKind actual_kind;		unsigned int i = 0;		/* parse the identifier, allowing scoping like "class Foo::Bar::Baz" */		while (1)		{			actual_kind = parseIdentifier (cp, chunk, expected_kind);			if (i++ > 0)				vStringPut (name, '.');			vStringCat (name, chunk);			vStringClear (chunk);			if (actual_kind != K_UNDEFINED && (*cp)[0] == ':' && (*cp)[1] == ':')				*cp += 2;			else				break;		}		vStringDelete (chunk);		vStringTerminate (name);		if (actual_kind == K_UNDEFINED || vStringLength (name) == 0)		{			/*			* What kind of tags should we create for code like this?			*			*    %w(self.clfloor clfloor).each do |name|			*        module_eval <<-"end;"			*            def #{name}(x, y=1)			*                q, r = x.divmod(y)			*                q = q.to_i			*                return q, r			*            end			*        end;			*    end			*			* Or this?			*			*    class << HTTP			*			* For now, we don't create any.			*/		}		else		{			emitRubyTag (name, actual_kind);		}		vStringDelete (name);	}}
开发者ID:pombredanne,项目名称:ctags.rb,代码行数:55,


示例15: emitRubyTag

/** Emits a tag for the given 'name' of kind 'kind' at the current nesting.*/static void emitRubyTag (vString* name, rubyKind kind){	tagEntryInfo tag;	vString* scope;	tagEntryInfo *parent;	rubyKind parent_kind = K_UNDEFINED;	NestingLevel *lvl;	const char *unqualified_name;	const char *qualified_name;	int r;        if (!RubyKinds[kind].enabled) {            return;        }	vStringTerminate (name);	scope = nestingLevelsToScope (nesting);	lvl = nestingLevelsGetCurrent (nesting);	parent = getEntryOfNestingLevel (lvl);	if (parent)		parent_kind =  parent->kind - RubyKinds;	qualified_name = vStringValue (name);	unqualified_name = strrchr (qualified_name, SCOPE_SEPARATOR);	if (unqualified_name && unqualified_name[1])	{		if (unqualified_name > qualified_name)		{			if (vStringLength (scope) > 0)				vStringPut (scope, SCOPE_SEPARATOR);			vStringNCatS (scope, qualified_name,			              unqualified_name - qualified_name);			/* assume module parent type for a lack of a better option */			parent_kind = K_MODULE;		}		unqualified_name++;	}	else		unqualified_name = qualified_name;	initTagEntry (&tag, unqualified_name, &(RubyKinds [kind]));	if (vStringLength (scope) > 0) {		Assert (0 <= parent_kind &&		        (size_t) parent_kind < (ARRAY_SIZE (RubyKinds)));		tag.extensionFields.scopeKind = &(RubyKinds [parent_kind]);		tag.extensionFields.scopeName = vStringValue (scope);	}	r = makeTagEntry (&tag);	nestingLevelsPush (nesting, r);	vStringClear (name);	vStringDelete (scope);}
开发者ID:amosbird,项目名称:ctags,代码行数:58,


示例16: vStringNew

/** * Reads from 'start' to 'end' and eliminates all spaces * inbetween. */static char *readBetweenDelimitersWhileTrimmingSpaces(char start, char end) {  static vString *wordBuffer = 0;  int z;  if (!wordBuffer)    wordBuffer = vStringNew();  else    vStringClear(wordBuffer);  z = skipToNonWhite();  if (z != start) return NULL;  while ((z = cppGetc()) != EOF && z != end) {    if (isspace(z)) continue;    vStringPut(wordBuffer, z);  }  if (z == EOF) return NULL;  vStringPut(wordBuffer, z);  vStringPut(wordBuffer, 0);  return vStringValue(wordBuffer);}
开发者ID:duchy,项目名称:ctags-ObjC-5.8.1,代码行数:24,


示例17: parseFunction

static void parseFunction (const unsigned char *line){	vString *name = vStringNew ();	/* boolean inFunction = FALSE; */	int scope;	const unsigned char *cp = line + 1;	if ((int) *++cp == 'n'	&&	(int) *++cp == 'c'	&&		(int) *++cp == 't'	&&	(int) *++cp == 'i'	&&		(int) *++cp == 'o'	&&	(int) *++cp == 'n')			++cp;	if ((int) *cp == '!')		++cp;	if (isspace ((int) *cp))	{		while (*cp && isspace ((int) *cp))			++cp;		if (*cp)		{			cp = skipPrefix (cp, &scope);			if (isupper ((int) *cp)  ||  					scope == 's'  ||  /* script scope */					scope == '<'  ||  /* script scope */					scope == 'd'  ||  /* dictionary */					scope == 'a')	  /* autoload */			{				do				{					vStringPut (name, (int) *cp);					++cp;				} while (isalnum ((int) *cp) ||  *cp == '_' ||	*cp == '.' ||  *cp == '#');				vStringTerminate (name);				makeSimpleTag (name, VimKinds, K_FUNCTION);				vStringClear (name);			}		}	}	/* TODO - update struct to indicate inside function */	while ((line = readVimLine ()) != NULL)	{		/* 		 * Vim7 added the for/endfo[r] construct, so we must first		 * check for an "endfo", before a "endf"		 */		if ( (!strncmp ((const char*) line, "endfo", (size_t) 5) == 0) && 				(strncmp ((const char*) line, "endf", (size_t) 4) == 0)   )			break;		/* TODO - call parseVimLine */	}	vStringDelete (name);}
开发者ID:Cognoscan,项目名称:ctags,代码行数:54,


示例18: parseIdentifier

static void parseIdentifier (vString *const string, const int firstChar){	int c = firstChar;	do	{		vStringPut (string, (char) c);		c = getcFromInputFile ();	} while (isIdentChar (c));	ungetcToInputFile (c);	vStringTerminate (string);}
开发者ID:blackb1rd,项目名称:ctags,代码行数:11,


示例19: parseIdentifier

/** Copies the characters forming an identifier from *cp into* name, leaving *cp pointing to the character after the identifier.*/static rubyKind parseIdentifier (        const unsigned char** cp, vString* name, rubyKind kind){    /* Method names are slightly different to class and variable names.     * A method name may optionally end with a question mark, exclamation     * point or equals sign. These are all part of the name.     * A method name may also contain a period if it's a singleton method.     */    const char* also_ok = (kind == K_METHOD) ? "_.?!=" : "_";    skipWhitespace (cp);    /* Check for an anonymous (singleton) class such as "class << HTTP". */    if (kind == K_CLASS && **cp == '<' && *(*cp + 1) == '<')    {        return K_UNDEFINED;    }    /* Check for operators such as "def []=(key, val)". */    if (kind == K_METHOD || kind == K_SINGLETON)    {        if (parseRubyOperator (name, cp))        {            return kind;        }    }    /* Copy the identifier into 'name'. */    while (**cp != 0 && (isalnum (**cp) || charIsIn (**cp, also_ok)))    {        char last_char = **cp;        vStringPut (name, last_char);        ++*cp;        if (kind == K_METHOD)        {            /* Recognize singleton methods. */            if (last_char == '.')            {                vStringTerminate (name);                vStringClear (name);                return parseIdentifier (cp, name, K_SINGLETON);            }            /* Recognize characters which mark the end of a method name. */            if (charIsIn (last_char, "?!="))            {                break;            }        }    }    return kind;}
开发者ID:jsvisa,项目名称:ctags,代码行数:58,


示例20: vStringClear

static const unsigned char *parseIdentifier (		const unsigned char *cp, vString *const identifier){	vStringClear (identifier);	while (isIdentifierCharacter ((int) *cp))	{		vStringPut (identifier, (int) *cp);		++cp;	}	return cp;}
开发者ID:ParrotSec,项目名称:geany,代码行数:11,


示例21: parseString

static void parseString (vString * const string, const int delimiter){	boolean end = FALSE;	while (!end)	{		int c = fileGetc ();		if (c == EOF)			end = TRUE;		else if (c == '//')		{			c = fileGetc ();	/* This maybe a ' or ". */			vStringPut (string, c);		}		else if (c == delimiter)			end = TRUE;		else			vStringPut (string, c);	}	vStringTerminate (string);}
开发者ID:relaxdiego,项目名称:ctags,代码行数:20,


示例22: parseIdentifier

static void parseIdentifier (vString *const string, const int firstChar){	int c = firstChar;	do	{		vStringPut (string, c);		c = getcFromInputFile ();	} while (isIdentChar (c));	vStringTerminate (string);	ungetcToInputFile (c);		/* always unget, LF might add a semicolon */}
开发者ID:Dev0Null,项目名称:ctags,代码行数:11,


示例23: parseSelector

static void parseSelector (vString *const string, const int firstChar){	int c = firstChar;	do	{		vStringPut (string, (char) c);		c = fileGetc ();	} while (isSelectorChar (c));	fileUngetc (c);	vStringTerminate (string);}
开发者ID:relaxdiego,项目名称:ctags,代码行数:11,


示例24: parseString

static void parseString (vString *const string, const int delimiter){	boolean end = FALSE;	while (! end)	{		int c = fileGetc ();		if (c == EOF)			end = TRUE;		else if (c == '//')		{			/* Eat the escape sequence (/", /', etc).  We properly handle			 * <LineContinuation> by eating a whole /<CR><LF> not to see <LF>			 * as an unescaped character, which is invalid and handled below.			 * Also, handle the fact that <LineContinuation> produces an empty			 * sequence.			 * See ECMA-262 7.8.4 */			c = fileGetc();			if (c != '/r' && c != '/n')				vStringPut(string, c);			else if (c == '/r')			{				c = fileGetc();				if (c != '/n')					fileUngetc (c);			}		}		else if (c == delimiter)			end = TRUE;		else if (c == '/r' || c == '/n')		{			/* those are invalid when not escaped */			end = TRUE;			/* we don't want to eat the newline itself to let the automatic			 * semicolon insertion code kick in */			fileUngetc (c);		}		else			vStringPut (string, c);	}	vStringTerminate (string);}
开发者ID:BenWiederhake,项目名称:geany,代码行数:41,


示例25: vStringNew

/* While ANSI only permits lines of the form: *   # line n "filename" * Earlier compilers generated lines of the form *   # n filename * GNU C will output lines of the form: *   # n "filename" * So we need to be fairly flexible in what we accept. */static vString *readFileName (char *s){	vString *const fileName = vStringNew ();	bool quoteDelimited = false;	skipWhite (&s);	if (*s == '"')	{		s++;  /* skip double-quote */		quoteDelimited = true;	}	while (*s != '/0'  &&  *s != '/n'  &&			(quoteDelimited ? (*s != '"') : (*s != ' '  &&  *s != '/t')))	{		vStringPut (fileName, *s);		s++;	}	vStringPut (fileName, '/0');	return fileName;}
开发者ID:pragmaware,项目名称:ctags,代码行数:29,


示例26: parseIdentifier

/*  Read a VHDL identifier beginning with "firstChar" and place it into "name".*/static void parseIdentifier (vString * const string, const int firstChar){	int c = firstChar;	Assert (isIdentChar1 (c));	do	{		vStringPut (string, c);		c = getcFromInputFile ();	} while (isIdentChar (c));	if (!isspace (c))		ungetcToInputFile (c);	/* unget non-identifier character */}
开发者ID:pragmaware,项目名称:ctags,代码行数:14,


示例27: parseIdentifier

/*	Read a C identifier beginning with "firstChar" and places it into *	"name". */static void parseIdentifier (vString *const string, const int firstChar){	int c = firstChar;	Assert (isIdentChar (c));	do	{		vStringPut (string, c);		c = fileGetc ();	} while (isIdentChar (c));	vStringTerminate (string);	fileUngetc (c);		/* unget non-identifier character */}
开发者ID:BenWiederhake,项目名称:geany,代码行数:15,


示例28: readIdentifier

static void readIdentifier (const int first, vString *const id){	int c = first;	vStringClear (id);	while (isIdentifier (c))	{		vStringPut (id, c);		c = nextChar ();	}	fileUngetc (c);	vStringTerminate (id);}
开发者ID:ajitvin,项目名称:v,代码行数:12,


示例29: cxxTokenChainExtractRange

CXXToken * cxxTokenChainExtractRange(		CXXToken * from,		CXXToken * to,		unsigned int uFlags	){	if(!from)		return NULL;	CXXToken * pToken = from;	CXXToken * pRet = cxxTokenCreate();	pRet->iLineNumber = pToken->iLineNumber;	pRet->oFilePosition = pToken->oFilePosition;	pRet->eType = pToken->eType;	cxxTokenAppendToString(pRet->pszWord,pToken);	if(			(!(uFlags & CXXTokenChainExtractRangeNoTrailingSpaces)) &&			pToken->bFollowedBySpace		)		vStringPut (pRet->pszWord, ' ');	pRet->bFollowedBySpace = pToken->bFollowedBySpace;	while(pToken != to)	{		pToken = pToken->pNext;		if(!pToken)			return pRet;		cxxTokenAppendToString(pRet->pszWord,pToken);		if(				(!(uFlags & CXXTokenChainExtractRangeNoTrailingSpaces)) &&				pToken->bFollowedBySpace			)			vStringPut (pRet->pszWord, ' ');		pRet->bFollowedBySpace = pToken->bFollowedBySpace;	}	return pRet;}
开发者ID:pjkack,项目名称:ctags,代码行数:40,


示例30: cxxTokenChainJoinInString

void cxxTokenChainJoinInString(		CXXTokenChain * tc,		vString * s,		const char * szSeparator,		unsigned int uFlags	){	if(!tc)		return;	if(tc->iCount == 0)		return;	CXXToken * t = tc->pHead;	cxxTokenAppendToString(s,t);	if(			(!(uFlags & CXXTokenChainJoinNoTrailingSpaces)) &&			t->bFollowedBySpace		)		vStringPut (s, ' ');	t = t->pNext;	while(t)	{		if(szSeparator)			vStringCatS(s,szSeparator);		cxxTokenAppendToString(s,t);		if(				(!(uFlags & CXXTokenChainJoinNoTrailingSpaces)) &&				t->bFollowedBySpace			)			vStringPut (s, ' ');		t = t->pNext;	}}
开发者ID:pjkack,项目名称:ctags,代码行数:40,



注:本文中的vStringPut函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ vStringTerminate函数代码示例
C++ vStringNewInit函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。