当前位置: 首页>>代码示例>>C++>>正文


C++ chartorune函数代码示例

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


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

示例1: _fmtcpy

int
_fmtcpy(Fmt *f, void *vm, int n, int sz)
{
	Rune *rt, *rs, r;
	char *t, *s, *m, *me;
	ulong fl;
	int nc, w;

	m = vm;
	me = m + sz;
	w = f->width;
	fl = f->flags;
	if((fl & FmtPrec) && n > f->prec)
		n = f->prec;
	if(f->runes){
		if(!(fl & FmtLeft) && _rfmtpad(f, w - n) < 0)
			return -1;
		rt = f->to;
		rs = f->stop;
		for(nc = n; nc > 0; nc--){
			r = *(uchar*)m;
			if(r < Runeself)
				m++;
			else if((me - m) >= UTFmax || fullrune(m, me-m))
				m += chartorune(&r, m);
			else
				break;
			FMTRCHAR(f, rt, rs, r);
		}
		f->nfmt += rt - (Rune *)f->to;
		f->to = rt;
		if(m < me)
			return -1;
		if(fl & FmtLeft && _rfmtpad(f, w - n) < 0)
			return -1;
	}else{
		if(!(fl & FmtLeft) && _fmtpad(f, w - n) < 0)
			return -1;
		t = f->to;
		s = f->stop;
		for(nc = n; nc > 0; nc--){
			r = *(uchar*)m;
			if(r < Runeself)
				m++;
			else if((me - m) >= UTFmax || fullrune(m, me-m))
				m += chartorune(&r, m);
			else
				break;
			FMTRUNE(f, t, s, r);
		}
		f->nfmt += t - (char *)f->to;
		f->to = t;
		if(fl & FmtLeft && _fmtpad(f, w - n) < 0)
			return -1;
	}
	return 0;
}
开发者ID:AndreasBriese,项目名称:node9,代码行数:57,代码来源:dofmt.c

示例2: equtf

/*
 * Do p and q point at equal utf codes
 */
int
equtf(uint8_t *p, uint8_t *q)
{
	Rune pr, qr;
	if(*p!=*q)
		return 0;

	chartorune(&pr, (char*)p);
	chartorune(&qr, (char*)q);
	return pr == qr;
}
开发者ID:dancrossnyc,项目名称:harvey,代码行数:14,代码来源:glob.c

示例3: strncmpcanon

static int strncmpcanon(const char *a, const char *b, int n)
{
	Rune ra, rb;
	int c;
	while (n--) {
		if (!*a) return -1;
		if (!*b) return 1;
		a += chartorune(&ra, a);
		b += chartorune(&rb, b);
		c = canon(ra) - canon(rb);
		if (c)
			return c;
	}
	return 0;
}
开发者ID:MajenkoLibraries,项目名称:MuJS,代码行数:15,代码来源:regexp.c

示例4: memimagestring

Point
memimagestring(Memimage *b, Point p, Memimage *color, Point cp, Memsubfont *f, char *cs)
{
	int w, width;
	uchar *s;
	Rune c;
	Fontchar *i;

	s = (uchar*)cs;
	for(; (c=*s); p.x+=width, cp.x+=width){
		width = 0;
		if(c < Runeself)
			s++;
		else{
			w = chartorune(&c, (char*)s);
			if(w == 0){
				s++;
				continue;
			}
			s += w;
		}
		if(c >= f->n)
			continue;
//		i = f->info+c;
		i = &(f->info[c]);
		width = i->width;
		memdraw(b, Rect(p.x+i->left, p.y+i->top, p.x+i->left+(i[1].x-i[0].x), p.y+i->bottom),
			color, cp, f->bits, Pt(i->x, i->top), SoverD);
	}
	return p;
}
开发者ID:0intro,项目名称:drawterm,代码行数:31,代码来源:string.c

示例5: Str_search

V7_PRIVATE enum v7_err Str_search(struct v7_c_func_arg *cfa) {
#define v7 (cfa->v7) /* Needed for TRY() macro below */
  struct v7_val *arg = cfa->args[0];
  struct Resub sub;
  int shift = -1, utf_shift = -1;

  if (cfa->num_args > 0) {
    TRY(check_str_re_conv(v7, &arg, 1));
    TRY(regex_check_prog(arg));
    if (!re_exec(arg->v.str.prog, arg->fl.fl, cfa->this_obj->v.str.buf, &sub))
      shift = sub.sub[0].start - cfa->this_obj->v.str.buf;
  }
  if (shift > 0) { /* calc shift for UTF-8 */
    Rune rune;
    const char *str = cfa->this_obj->v.str.buf;
    utf_shift = 0;
    do {
      str += chartorune(&rune, str);
      utf_shift++;
    } while (str - cfa->this_obj->v.str.buf < shift);
  }
  v7_push_number(v7, utf_shift);
  return V7_OK;
#undef v7
}
开发者ID:amihwan,项目名称:v7,代码行数:25,代码来源:string.c

示例6: getchr

int
getchr(void)
{
	char s[UTFmax];
	int i;
	Rune r;

	if(lastc = peekc) {
		peekc = 0;
		return lastc;
	}
	if(globp) {
		if((lastc=*globp++) != 0)
			return lastc;
		globp = 0;
		return EOF;
	}
	for(i=0;;) {
		if(read(0, s+i, 1) <= 0)
			return lastc = EOF;
		i++;
		if(fullrune(s, i))
			break;
		
	}
	chartorune(&r, s);
	lastc = r;
	return lastc;
}
开发者ID:00001,项目名称:plan9port,代码行数:29,代码来源:ed.c

示例7: exportname

/* From Plan 9 to Unix */
char*
exportname(char* name)
{
	Rune r;
	int   nr;
	char *uxname;
	char *up;

	if (name == 0 || 
		(utfrune(name, altspc) == 0 &&
		 utfrune(name,altlparen) == 0 &&
		 utfrune(name,altrparen) == 0 &&
		 utfrune(name,altamp) == 0 &&
		 utfrune(name,altquote) == 0))
		return name;
	up = uxname = emalloc(strlen(name) + 1);
	names[nnames++] = uxname;
	while(*name != 0){
		nr = chartorune(&r, name);
		if (r == altspc)
			r = ' ';
		if (r == altlparen)
			r = '(';
		if (r == altrparen)
			r = ')';
		if (r == altamp)
			r = '&';
		if (r == altquote)
			r = '\'';
		up += runetochar(up, &r);
		name += nr;
	}
	*up = 0;
	return uxname;
}
开发者ID:CoryXie,项目名称:nix-os,代码行数:36,代码来源:trfs.c

示例8: utfrune

char*
utfrune(char *s, long c)
{
	long c1;
	Rune r;
	int n;

	if(c < Runesync)		/* not part of utf sequence */
		return strchr(s, c);

	for(;;) {
		c1 = *(uchar*)s;
		if(c1 < Runeself) {	/* one byte rune */
			if(c1 == 0)
				return 0;
			if(c1 == c)
				return s;
			s++;
			continue;
		}
		n = chartorune(&r, s);
		if(r == c)
			return s;
		s += n;
	}
	return 0;
}
开发者ID:0intro,项目名称:drawterm,代码行数:27,代码来源:utfrune.c

示例9: buildmap

static void
buildmap(Biobuf *fp)	/* map goes from char name to value to print via *string() */
{
    uchar *p, *line, ch[100];
    int val;
    Rune r;

    curmap++;
    if(curmap >= NMAP) {
        fprint(2, "proof: out of char maps; recompile\n");
        exits("charmap");
    }
    while ((line = Brdline(fp, '\n'))!= 0) {
        if (line[0] == '\n')
            return;
        line[Blinelen(fp)-1] = 0;
        scanstr((char *) line, (char *) ch, (char **) &p);
        if (ch[0] == '\0') {
            fprint(2, "bad map file line '%s'\n", (char*)line);
            continue;
        }
        val = strtol((char *) p, 0, 10);
        dprint(2, "buildmap %s (%x %x) %s %d\n", (char*)ch, ch[0], ch[1], (char*)p, val);
        chartorune(&r, (char*)ch);
        if(utflen((char*)ch)==1 && r<QUICK)
            charmap[curmap].quick[r] = val;
        else
            addmap(curmap, strdup((char *) ch), val);	/* put somewhere else */
    }
}
开发者ID:grobe0ba,项目名称:plan9front,代码行数:30,代码来源:font.c

示例10: Bgetrune

long
Bgetrune(Biobuf *bp)
{
	int c, i;
	Rune rune;
	char str[UTFmax];

	c = Bgetc(bp);
	if(c < Runeself) {		/* one char */
		bp->runesize = 1;
		return c;
	}
	str[0] = c;

	for(i=1;;) {
		c = Bgetc(bp);
		if(c < 0)
			return c;
		str[i++] = c;

		if(fullrune(str, i)) {
			bp->runesize = chartorune(&rune, str);
			while(i > bp->runesize) {
				Bungetc(bp);
				i--;
			}
			return rune;
		}
	}
}
开发者ID:GregBowyer,项目名称:wmii,代码行数:30,代码来源:bgetrune.c

示例11: fmtstrcpy

/* public helper routine: fmt out a null terminated string already in hand */
int
fmtstrcpy(Fmt *f, char *s)
{
	int i, j;

	if(!s)
		return __fmtcpy(f, "<nil>", 5, 5);
	/* if precision is specified, make sure we don't wander off the end */
	if(f->flags & FmtPrec){
#ifdef PLAN9PORT
		Rune r;
		i = 0;
		for(j=0; j<f->prec && s[i]; j++)
			i += chartorune(&r, s+i);
#else
		/* ANSI requires precision in bytes, not Runes */
		for(i=0; i<f->prec; i++)
			if(s[i] == 0)
				break;
		j = utfnlen(s, i);	/* won't print partial at end */
#endif
		return __fmtcpy(f, s, j, i);
	}
	return __fmtcpy(f, s, utflen(s), strlen(s));
}
开发者ID:fizx,项目名称:libregexp9,代码行数:26,代码来源:dofmt.c

示例12: fmtr

void
fmtr(char *f)
{
	int i, w, cw;
	Rune r;
	static int nstart;

	USED(f);
	if(nstart)	
		xprint("%*c", 3*nstart, ' ');
	for(i=nstart; i<ndata; )
		if(data[i] < Runeself)
			onefmtc(data[i++]);
		else{
			w = chartorune(&r, (char *)data+i);
			if(w == 1 || i + w>nread)
				onefmtc(data[i++]);
			else{
				cw = w;
				if(i + w>ndata)
					cw = ndata - i;
				xprint(rfmt[0][0], r);	
				xprint("%*c", 3*cw-3, ' ');
				i += w;
			}
		}
	if(i > ndata)
		nstart = i - ndata;
	else
		nstart = 0;
}
开发者ID:bbarker,项目名称:plan9,代码行数:31,代码来源:xd.c

示例13: dataclass

/*
 * classify by initial contents of file
 */
HContents
dataclass(HConnect *hc, char *buf, int n)
{
	HContents conts;
	Rune r;
	int c, m;

	for(; n > 0; n -= m){
		c = *buf;
		if(c < Runeself){
			if(c < 32 && c != '\n' && c != '\r' && c != '\t' && c != '\v'){
				conts.type = nil;
				conts.encoding = nil;
				return conts;
			}
			m = 1;
		}else{
			m = chartorune(&r, buf);
			if(r == Runeerror){
				conts.type = nil;
				conts.encoding = nil;
				return conts;
			}
		}
		buf += m;
	}
	conts.type = hmkcontent(hc, "text", "plain", nil);
	conts.encoding = nil;
	return conts;
}
开发者ID:AustenConrad,项目名称:plan-9,代码行数:33,代码来源:content.c

示例14: termscreenputs

static void
termscreenputs(char *s, int n)
{
	int i, locked;
	Rune r;
	char buf[4];

	lock(&screenlock);
	locked = drawcanqlock();
	while(n > 0){
		i = chartorune(&r, s);
		if(i == 0){
			s++;
			--n;
			continue;
		}
		memmove(buf, s, i);
		buf[i] = 0;
		n -= i;
		s += i;
		screenputc(buf);
	}
	if(locked)
		drawqunlock();
	screenflush();
	unlock(&screenlock);
}
开发者ID:npe9,项目名称:harvey,代码行数:27,代码来源:term.c

示例15: pstr

static void pstr(const char *s)
{
	static const char *HEX = "0123456789ABCDEF";
	Rune c;
	pc('"');
	while (*s) {
		s += chartorune(&c, s);
		switch (c) {
		case '"': ps("\\\""); break;
		case '\\': ps("\\\\"); break;
		case '\b': ps("\\b"); break;
		case '\f': ps("\\f"); break;
		case '\n': ps("\\n"); break;
		case '\r': ps("\\r"); break;
		case '\t': ps("\\t"); break;
		default:
			if (c < ' ' || c > 127) {
				ps("\\u");
				pc(HEX[(c>>12)&15]);
				pc(HEX[(c>>8)&15]);
				pc(HEX[(c>>4)&15]);
				pc(HEX[c&15]);
			} else {
				pc(c); break;
			}
		}
开发者ID:UIKit0,项目名称:mujs,代码行数:26,代码来源:jsdump.c


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