这篇教程C++ string_make函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中string_make函数的典型用法代码示例。如果您正苦于以下问题:C++ string_make函数的具体用法?C++ string_make怎么用?C++ string_make使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了string_make函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: change_path/** * Handle a "-d<dir>=<path>" option. * * Sets any of angband's special directories to <path>. * * The "<path>" can be any legal path for the given system, and should * not end in any special path separator (i.e. "/tmp" or "~/.ang-info"). */static void change_path(const char *info){ char *info_copy = NULL; char *path = NULL; char *dir = NULL; unsigned int i = 0; char dirpath[512]; if (!info || !info[0]) quit_fmt("Try '-d<dir>=<path>'.", info); info_copy = string_make(info); path = strtok(info_copy, "="); dir = strtok(NULL, "="); for (i = 0; i < N_ELEMENTS(change_path_values); i++) { if (my_stricmp(path, change_path_values[i].name) == 0) {#ifdef SETGID if (!change_path_values[i].setgid_ok) quit_fmt("Can't redefine path to %s dir on multiuser setup", path);#endif string_free(*change_path_values[i].path); *change_path_values[i].path = string_make(dir); /* the directory may not exist and may need to be created. */ path_build(dirpath, sizeof(dirpath), dir, ""); if (!dir_create(dirpath)) quit_fmt("Cannot create '%s'", dirpath); return; } } quit_fmt("Unrecognised -d paramater %s", path);}
开发者ID:NickMcConnell,项目名称:FirstAgeAngband,代码行数:43,
示例2: parse_specsstatic errr parse_specs(struct parser_hook *h, char *fmt) { char *name ; char *stype = NULL; int type; struct parser_spec *s; assert(h); assert(fmt); name = strtok(fmt, " "); if (!name) return -EINVAL; h->dir = string_make(name); h->fhead = NULL; h->ftail = NULL; while (name) { /* Lack of a type is legal; that means we're at the end of the line. */ stype = strtok(NULL, " "); if (!stype) break; /* Lack of a name, on the other hand... */ name = strtok(NULL, " "); if (!name) { clean_specs(h); return -EINVAL; } /* Grab a type, check to see if we have a mandatory type * following an optional type. */ type = parse_type(stype); if (type == PARSE_T_NONE) { clean_specs(h); return -EINVAL; } if (!(type & PARSE_T_OPT) && h->ftail && (h->ftail->type & PARSE_T_OPT)) { clean_specs(h); return -EINVAL; } if (h->ftail && ((h->ftail->type & ~PARSE_T_OPT) == PARSE_T_STR)) { clean_specs(h); return -EINVAL; } /* Save this spec. */ s = mem_alloc(sizeof *s); s->type = type; s->name = string_make(name); s->next = NULL; if (h->fhead) h->ftail->next = s; else h->fhead = s; h->ftail = s; } return 0;}
开发者ID:BardurArantsson,项目名称:angband,代码行数:59,
示例3: files_readlvalue files_read(lvalue v_) { char *s = (char *)v_; char *buffer; lvalue *ptr; long size; FILE *fh = fopen(s, "rb"); if (fh != NULL) { fseek(fh, 0L, SEEK_END); size = ftell(fh); rewind(fh); buffer = malloc(size + sizeof(lvalue) + 1); ptr = (lvalue*)buffer; *ptr = (lvalue) size; buffer = (char *) (ptr+1); long rsize = fread(buffer, 1, size, fh); fclose(fh); fh = NULL; if (rsize == size) { *(buffer + size) = 0; return (lvalue) buffer; } } return string_make((lvalue) "");}
开发者ID:vrotaru,项目名称:LinearEuler,代码行数:31,
示例4: init_sound/* * Initialize sound */static bool init_sound(void){ /* Initialize once */ if (!can_use_sound) { int i; char wav[128]; char buf[1024]; /* Prepare the sounds */ for (i = 1; i < SOUND_MAX; i++) { /* Extract name of sound file */ sprintf(wav, "%s.wav", angband_sound_name[i]); /* Access the sound */ path_build(buf, sizeof(buf), ANGBAND_DIR_XTRA_SOUND, wav); /* Save the sound filename, if it exists */ if (check_file(buf)) sound_file[i] = string_make(buf); } /* Sound available */ can_use_sound = TRUE; } /* Result */ return (can_use_sound);}
开发者ID:dplusplus,项目名称:hengband_njslyr,代码行数:33,
示例5: parse_r_sstatic enum parser_error parse_r_s(struct parser *p) { struct monster_race *r = parser_priv(p); char *flags; char *s; int pct; int ret = PARSE_ERROR_NONE; if (!r) return PARSE_ERROR_MISSING_RECORD_HEADER; flags = string_make(parser_getstr(p, "spells")); s = strtok(flags, " |"); while (s) { if (1 == sscanf(s, "1_IN_%d", &pct)) { if (pct < 1 || pct > 100) { ret = PARSE_ERROR_INVALID_SPELL_FREQ; break; } r->freq_spell = 100 / pct; r->freq_innate = r->freq_spell; } else { if (grab_flag(r->spell_flags, RSF_SIZE, r_info_spell_flags, s)) { ret = PARSE_ERROR_INVALID_FLAG; break; } } s = strtok(NULL, " |"); } /* Add the "base monster" flags to the monster */ if (r->base) rsf_union(r->spell_flags, r->base->spell_flags); mem_free(flags); return ret;}
开发者ID:jenschou,项目名称:angband,代码行数:35,
示例6: ZNEW/* * Open file 'fname', in mode 'mode', with filetype 'ftype'. * Returns file handle or NULL. */ang_file *file_open(const char *fname, file_mode mode, file_type ftype){ ang_file *f = ZNEW(ang_file); char buf[1024]; (void)ftype; /* Get the system-specific path */ path_parse(buf, sizeof(buf), fname); switch (mode) { case MODE_WRITE: f->fh = fopen(buf, "wb"); break; case MODE_READ: f->fh = fopen(buf, "rb"); break; case MODE_APPEND: f->fh = fopen(buf, "a+"); break; default: f->fh = fopen(buf, "__"); } if (f->fh == NULL) { FREE(f); return NULL; } f->fname = string_make(buf); f->mode = mode; if (mode != MODE_READ && file_open_hook) file_open_hook(buf, ftype); return f;}
开发者ID:antoine-from-rgrd,项目名称:Minimal,代码行数:36,
示例7: parser_regerrr parser_reg(struct parser *p, const char *fmt, enum parser_error (*func)(struct parser *p)) { errr r; char *cfmt; struct parser_hook *h; assert(p); assert(fmt); assert(func); h = mem_alloc(sizeof *h); cfmt = string_make(fmt); h->next = p->hooks; h->func = func; r = parse_specs(h, cfmt); if (r) { mem_free(h); mem_free(cfmt); return r; } p->hooks = h; mem_free(cfmt); return 0;}
开发者ID:konijn,项目名称:angband,代码行数:26,
示例8: setup_argvstatic voidsetup_argv(struct Parrot_Interp *interpreter, int argc, char ** argv){ INTVAL i; PMC *userargv; if (Interp_flags_TEST(interpreter, PARROT_DEBUG_FLAG)) { PIO_eprintf(interpreter, "*** Parrot VM: Setting up ARGV array in P5. Current argc: %d ***/n", argc); } userargv = pmc_new_noinit(interpreter, enum_class_SArray); /* immediately anchor pmc to root set */ interpreter->pmc_reg.registers[5] = userargv; VTABLE_set_pmc_keyed_int(interpreter, interpreter->iglobals, (INTVAL)IGLOBALS_ARGV_LIST, userargv); VTABLE_init(interpreter, userargv); VTABLE_set_integer_native(interpreter, userargv, argc); for (i = 0; i < argc; i++) { /* Run through argv, adding everything to @ARGS. */ STRING *arg = string_make(interpreter, argv[i], strlen(argv[i]), 0, PObj_external_FLAG, 0); if (Interp_flags_TEST(interpreter, PARROT_DEBUG_FLAG)) { PIO_eprintf(interpreter, "/t%vd: %s/n", i, argv[i]); } VTABLE_push_string(interpreter, userargv, arg); }}
开发者ID:gitpan,项目名称:ponie,代码行数:32,
示例9: change_path/* * Handle a "-d<what>=<path>" option * * The "<what>" can be any string starting with the same letter as the * name of a subdirectory of the "lib" folder (i.e. "i" or "info"). * * The "<path>" can be any legal path for the given system, and should * not end in any special path separator (i.e. "/tmp" or "~/.ang-info"). */static void change_path(const char *info){ if (!info || !info[0]) quit_fmt("Try '-d<path>'.", info); string_free(ANGBAND_DIR_USER); ANGBAND_DIR_USER = string_make(info);}
开发者ID:Colt374,项目名称:angband,代码行数:17,
示例10: parse_vault_typestatic enum parser_error parse_vault_type(struct parser *p) { struct vault *v = parser_priv(p); if (!v) return PARSE_ERROR_MISSING_RECORD_HEADER; v->typ = string_make(parser_getstr(p, "type")); return PARSE_ERROR_NONE;}
开发者ID:Elfin-Jedi,项目名称:My-Angband-4.0.5,代码行数:8,
示例11: change_path/* * Handle a "-d<what>=<path>" option * * The "<what>" can be any string starting with the same letter as the * name of a subdirectory of the "lib" folder (i.e. "i" or "info"). * * The "<path>" can be any legal path for the given system, and should * not end in any special path separator (i.e. "/tmp" or "~/.ang-info"). */static void change_path(cptr info){ if (!info || !info[0]) quit_fmt("Try '-d<path>'.", info); string_free(reposband_DIR_USER); reposband_DIR_USER = string_make(info);}
开发者ID:NickMcConnell,项目名称:RePosBand,代码行数:17,
示例12: parse_rb_nstatic enum parser_error parse_rb_n(struct parser *p) { struct monster_base *h = parser_priv(p); struct monster_base *rb = mem_zalloc(sizeof *rb); rb->next = h; rb->name = string_make(parser_getstr(p, "name")); parser_setpriv(p, rb); return PARSE_ERROR_NONE;}
开发者ID:jenschou,项目名称:angband,代码行数:8,
示例13: parse_prefs_gfstatic enum parser_error parse_prefs_gf(struct parser *p){ bool types[GF_MAX] = { 0 }; const char *direction; int motion; char *s, *t; size_t i; struct prefs_data *d = parser_priv(p); assert(d != NULL); if (d->bypass) return PARSE_ERROR_NONE; /* Parse the type, which is a | seperated list of GF_ constants */ s = string_make(parser_getsym(p, "type")); t = strtok(s, "| "); while (t) { if (streq(t, "*")) { memset(types, TRUE, sizeof types); } else { int idx = gf_name_to_idx(t); if (idx == -1) return PARSE_ERROR_INVALID_VALUE; types[idx] = TRUE; } t = strtok(NULL, "| "); } string_free(s); direction = parser_getsym(p, "direction"); if (streq(direction, "static")) motion = BOLT_NO_MOTION; else if (streq(direction, "0")) motion = BOLT_0; else if (streq(direction, "45")) motion = BOLT_45; else if (streq(direction, "90")) motion = BOLT_90; else if (streq(direction, "135")) motion = BOLT_135; else return PARSE_ERROR_INVALID_VALUE; for (i = 0; i < GF_MAX; i++) { if (!types[i]) continue; gf_to_attr[i][motion] = (byte) parser_getuint(p, "attr"); gf_to_char[i][motion] = (wchar_t) parser_getuint(p, "char"); } return PARSE_ERROR_NONE;}
开发者ID:NickMcConnell,项目名称:FAangband,代码行数:58,
示例14: parse_vault_name/** * Parsing functions for vault.txt */static enum parser_error parse_vault_name(struct parser *p) { struct vault *h = parser_priv(p); struct vault *v = mem_zalloc(sizeof *v); v->name = string_make(parser_getstr(p, "name")); v->next = h; parser_setpriv(p, v); return PARSE_ERROR_NONE;}
开发者ID:Elfin-Jedi,项目名称:My-Angband-4.0.5,代码行数:12,
示例15: parse_room_name/** * Parsing functions for room_template.txt */static enum parser_error parse_room_name(struct parser *p) { struct room_template *h = parser_priv(p); struct room_template *t = mem_zalloc(sizeof *t); t->name = string_make(parser_getstr(p, "name")); t->next = h; parser_setpriv(p, t); return PARSE_ERROR_NONE;}
开发者ID:Elfin-Jedi,项目名称:My-Angband-4.0.5,代码行数:12,
示例16: parse_summon_namestatic enum parser_error parse_summon_name(struct parser *p) { struct summon *h = parser_priv(p); struct summon *s = mem_zalloc(sizeof *s); s->next = h; parser_setpriv(p, s); s->name = string_make(parser_getstr(p, "name")); return PARSE_ERROR_NONE;}
开发者ID:magnate,项目名称:angband,代码行数:9,
示例17: parse_r_n/* Parsing functions for monster.txt */static enum parser_error parse_r_n(struct parser *p) { struct monster_race *h = parser_priv(p); struct monster_race *r = mem_zalloc(sizeof *r); r->next = h; r->ridx = parser_getuint(p, "index"); r->name = string_make(parser_getstr(p, "name")); parser_setpriv(p, r); return PARSE_ERROR_NONE;}
开发者ID:jenschou,项目名称:angband,代码行数:10,
示例18: Parrot_initialize_header_pool_namesvoidParrot_initialize_header_pool_names(struct Parrot_Interp *interpreter){ interpreter->arena_base->string_header_pool->name = string_make(interpreter, "String Pool", strlen("String Pool"), 0, PObj_constant_FLAG, 0); interpreter->arena_base->pmc_pool->name = string_make(interpreter, "PMC Pool", strlen("PMC Pool"), 0, PObj_constant_FLAG, 0); /* Set up names for each header pool, * now that we have a constant string * * * pool available to us */ interpreter->arena_base->constant_string_header_pool->name = string_make(interpreter, "Constant String Pool", strlen("Constant String Pool"), 0, PObj_constant_FLAG, 0); interpreter->arena_base->buffer_header_pool->name = string_make(interpreter, "Generic Header Pool", strlen("Generic Header Pool"), 0, PObj_constant_FLAG, 0);}
开发者ID:gitpan,项目名称:ponie,代码行数:20,
示例19: parse_quest_name/** * Parsing functions for quest.txt */static enum parser_error parse_quest_name(struct parser *p) { const char *name = parser_getstr(p, "name"); struct quest *h = parser_priv(p); struct quest *q = mem_zalloc(sizeof(*q)); q->next = h; parser_setpriv(p, q); q->name = string_make(name); return PARSE_ERROR_NONE;}
开发者ID:Elfin-Jedi,项目名称:My-Angband-4.0.5,代码行数:14,
示例20: my_strcpy/** * Small hack to allow both spellings of armer */char *de_armour(const char *name){ char newname[40]; char *armour; my_strcpy(newname, name, sizeof(newname)); armour = strstr(newname, "armour"); if (armour) my_strcpy(armour + 4, "r", 2); return string_make(newname);}
开发者ID:CrypticGator,项目名称:angband,代码行数:15,
示例21: ZNEW/* * Open file 'fname', in mode 'mode', with filetype 'ftype'. * Returns file handle or NULL. */ang_file *file_open(const char *fname, file_mode mode, file_type ftype){ ang_file *f = ZNEW(ang_file); char buf[1024]; (void)ftype; /* Get the system-specific path */ path_parse(buf, sizeof(buf), fname); switch (mode) { case MODE_WRITE: { if (ftype == FTYPE_SAVE) { /* open only if the file does not exist */ int fd; fd = open(buf, O_CREAT | O_EXCL | O_WRONLY | O_BINARY, S_IRUSR | S_IWUSR); if (fd < 0) { /* there was some error */ f->fh = NULL; } else { f->fh = fdopen(fd, "wb"); } } else { f->fh = fopen(buf, "wb"); } break; } case MODE_READ: f->fh = fopen(buf, "rb"); break; case MODE_APPEND: f->fh = fopen(buf, "a+"); break; default: assert(0); } if (f->fh == NULL) { FREE(f); return NULL; } f->fname = string_make(buf); f->mode = mode; if (mode != MODE_READ && file_open_hook) file_open_hook(buf, ftype); return f;}
开发者ID:DaPortlyJester,项目名称:angband,代码行数:55,
示例22: module_reset_dir_auxstatic void module_reset_dir_aux(cptr *dir, cptr new_path){ char buf[1024]; /* Build the new path */ strnfmt(buf, sizeof (buf), "%s%s%s", dir, PATH_SEP, new_path); string_free(*dir); *dir = string_make(buf); /* Make it if needed */ if (!private_check_user_directory(*dir)) quit(format("Unable to create module dir %s/n", *dir));}
开发者ID:AmyBSOD,项目名称:ToME-SX,代码行数:14,
示例23: parse_storestatic enum parser_error parse_store(struct parser *p) { struct store *h = parser_priv(p); struct store *s; unsigned int idx = parser_getuint(p, "index") - 1; if (idx >= MAX_STORES) return PARSE_ERROR_OUT_OF_BOUNDS; s = store_new(parser_getuint(p, "index") - 1); s->name = string_make(parser_getstr(p, "name")); s->next = h; parser_setpriv(p, s); return PARSE_ERROR_NONE;}
开发者ID:batogz,项目名称:angband,代码行数:14,
示例24: ZNEW/* * Open file 'fname', in mode 'mode', with filetype 'ftype'. * Returns file handle or NULL. */ang_file *file_open(const char *fname, file_mode mode, file_type ftype){ ang_file *f = ZNEW(ang_file); char buf[1024]; (void)ftype; /* Get the system-specific path */ path_parse(buf, sizeof(buf), fname); switch (mode) { case MODE_WRITE: f->fh = fopen(buf, "wb"); break; case MODE_READ: f->fh = fopen(buf, "rb"); break; case MODE_APPEND: f->fh = fopen(buf, "a+"); break; default: f->fh = fopen(buf, "__"); } if (f->fh == NULL) { FREE(f); return NULL; } f->fname = string_make(buf); f->mode = mode;#ifdef MACH_O_CARBON extern void fsetfileinfo(cptr path, u32b fcreator, u32b ftype); /* OS X uses its own kind of filetypes */ if (mode != MODE_READ) { u32b mac_type = 'TEXT'; if (ftype == FTYPE_RAW) mac_type = 'DATA'; else if (ftype == FTYPE_SAVE) mac_type = 'SAVE'; fsetfileinfo(buf, 'A271', mac_type); }#endif /* MACH_O_CARBON */#if defined(RISCOS) && 0 /* do something for RISC OS here? */ if (mode != MODE_READ) File_SetType(n, ftype);#endif return f;}
开发者ID:cinereaste,项目名称:angband,代码行数:54,
示例25: player_quests_reset/** * Copy all the standard quests to the player quest history */void player_quests_reset(struct player *p){ size_t i; if (p->quests) player_quests_free(p); p->quests = mem_zalloc(z_info->quest_max * sizeof(struct quest)); for (i = 0; i < z_info->quest_max; i++) { p->quests[i].name = string_make(quests[i].name); p->quests[i].level = quests[i].level; p->quests[i].race = quests[i].race; p->quests[i].max_num = quests[i].max_num; }}
开发者ID:Elfin-Jedi,项目名称:My-Angband-4.0.5,代码行数:18,
示例26: parse_ownerstatic enum parser_error parse_owner(struct parser *p) { struct store *s = parser_priv(p); unsigned int maxcost = parser_getuint(p, "purse"); char *name = string_make(parser_getstr(p, "name")); struct owner *o; if (!s) return PARSE_ERROR_MISSING_RECORD_HEADER; o = mem_zalloc(sizeof *o); o->oidx = (s->owners ? s->owners->oidx + 1 : 0); o->next = s->owners; o->name = name; o->max_cost = maxcost; s->owners = o; return PARSE_ERROR_NONE;}
开发者ID:batogz,项目名称:angband,代码行数:17,
示例27: parse_profile_name/** * Parsing functions for dungeon_profile.txt */static enum parser_error parse_profile_name(struct parser *p) { struct cave_profile *h = parser_priv(p); struct cave_profile *c = mem_zalloc(sizeof *c); size_t i; c->name = string_make(parser_getstr(p, "name")); for (i = 0; i < N_ELEMENTS(cave_builders); i++) if (streq(c->name, cave_builders[i].name)) break; if (i == N_ELEMENTS(cave_builders)) return PARSE_ERROR_NO_BUILDER_FOUND; c->builder = cave_builders[i].builder; c->next = h; parser_setpriv(p, c); return PARSE_ERROR_NONE;}
开发者ID:myshkin,项目名称:angband,代码行数:20,
示例28: button_add_endint button_add_end(const char *label, keycode_t keypress, int bottom, int right){ button_mouse* button = button_stack; if (!button) { return -1; } if (bottom) button->bottom = bottom; if (!right && label) { right = strlen(label); right = button->left + right; } if (right) button->right = right; if (keypress) button->key = keypress; if (label) { if (button->label) { (void)string_free(button->label); } button->label = (char*)string_make(label); } if (button_call_fn) { button->fn = button_call_fn; } if (button_add_2d_hook) { int res = (*button_add_2d_hook) (button->top, button->left, button->bottom, button->right, button->label, button->key); if (res) { // if res != 0 if (res == 1) { /* pop the button off of the stack */ button_stack = button->next; /* free the button */ if (button->label) string_free(button->label); FREE(button); } return res; } } /* Redraw */ p_ptr->redraw |= (PR_BUTTONS); return 0;}
开发者ID:blubaron,项目名称:z-angband,代码行数:45,
示例29: parse_r_pluralstatic enum parser_error parse_r_plural(struct parser *p){ struct monster_race *r = parser_priv(p); if (r == NULL) return PARSE_ERROR_MISSING_RECORD_HEADER; if (parser_hasval(p, "plural")) { const char *plural = parser_getstr(p, "plural"); if (strlen(plural) > 0) r->plural = string_make(plural); else r->plural = NULL; } return PARSE_ERROR_NONE;}
开发者ID:DaPortlyJester,项目名称:angband,代码行数:18,
注:本文中的string_make函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ string_or_die函数代码示例 C++ string_list_insert函数代码示例 |