Eine andere möglichkeit?
-
Gibts hierfür noch ne andere methode:
#include <sstream> ... std::ostringstream pfad_stream; pfad_stream << "cd/background" << i << ".png"; std::string pfad = pfad_stream.str();
Ich bin n absoluter anfänger in C++. Es schon n bissel verwirrend wie so einfache dinge in VB:
Pfad = "/cd/background" & i & ".png"
in C++ solche Probleme verursachen können. Ich bezweifel ja nicht das der code da oben funzen würde, aber leider geht das nicht mit KOS für den dreamcast, und das Programm das ich schreib ist nun mal leider für die kiste. Hier mal der ganze code:
//this is needed by KOS #define _arch_dreamcast /* Appwizard blank main template by Dovoto Assumes you are using KOS */ #include <kos.h> #include <png/png.h> #include <stdio.h> /* textures */ pvr_ptr_t back_tex; char *data; /* init background */ void back_init(char *background) { back_tex = pvr_mem_malloc(512*512*2); // 512*512 is the size of the png file must be png_to_texture(background, back_tex, PNG_NO_ALPHA);//no use of romsdisk virtural file system reads from the cd you can do this with mostly any think . } /* draw background */ void draw_back(void) { pvr_poly_cxt_t cxt; pvr_poly_hdr_t hdr; pvr_vertex_t vert; pvr_poly_cxt_txr(&cxt, PVR_LIST_OP_POLY, PVR_TXRFMT_RGB565, 512, 512, back_tex, PVR_FILTER_BILINEAR); pvr_poly_compile(&hdr, &cxt); pvr_prim(&hdr, sizeof(hdr)); vert.argb = PVR_PACK_COLOR(1.0f, 1.0f, 1.0f, 1.0f); vert.oargb = 0; vert.flags = PVR_CMD_VERTEX; vert.x = 1; vert.y = 1; vert.z = 1; vert.u = 0.0; vert.v = 0.0; pvr_prim(&vert, sizeof(vert)); vert.x = 640; vert.y = 1; vert.z = 1; vert.u = 1.0; vert.v = 0.0; pvr_prim(&vert, sizeof(vert)); vert.x = 1; vert.y = 480; vert.z = 1; vert.u = 0.0; vert.v = 1.0; pvr_prim(&vert, sizeof(vert)); vert.x = 640; vert.y = 480; vert.z = 1; vert.u = 1.0; vert.v = 1.0; vert.flags = PVR_CMD_VERTEX_EOL; pvr_prim(&vert, sizeof(vert)); } /* draw one frame */ void draw_frame(void) { pvr_wait_ready(); pvr_scene_begin(); pvr_list_begin(PVR_LIST_OP_POLY); draw_back(); pvr_scene_finish(); } int main(void) { int i=0; int ii = 0; char *pfad; /* init kos */ pvr_init_defaults(); /* Animation */ while(i<8){ i++; /* Hier soll mit i der Pfad für das Bild erstellt werden */ back_init(pfad); while(ii<2){ ii++; draw_frame(); } ii = 0; } return 0; }
-
Du könntest dir einfach eine int-to-string-Funktion schreiben. Hast du denn überhaupt std::string? Ansonsten wärst du im C-Forum vielleicht besser aufgehoben.
-
Keine ahnung ich glaub nicht, in nem DC Dev forum wurde darüber diskutiert. Hab zwar nicht ganz verstanden was die gemeint haben aber so weit ich das versteh ist das in KOS nicht enthalten. Da war die rede davon das man sprinf verwenden soll. Ist das damit möglich und wie muss das dann aussehen?
-
Ups sorry scheint doch drin zu sein, das steht in stdio.h
/* KallistiOS 1.1.6 stdio.h (c)2000-2002 Dan Potter $Id: stdio.h,v 1.4 2002/01/06 01:14:47 bardtx Exp $ */ #ifndef __STDIO_H #define __STDIO_H #include <sys/cdefs.h> __BEGIN_DECLS #include <unistd.h> #include <stdarg.h> #include <kos/fs.h> /* ANSI style wrappers for some of the fileio functions */ #ifndef EOF #define EOF (-1) #endif typedef struct _FILE_t FILE; typedef off_t fpos_t; /* For ANSI compatability */ #define stdin ( (FILE *)1 ) #define stdout ( (FILE *)2 ) #define stderr ( (FILE *)2 ) void clearerr(FILE *); int fclose(FILE *); FILE *fdopen(int, const char *); int feof(FILE *); int ferror(FILE *); int fflush(FILE *); int fgetc(FILE *); int fgetpos(FILE *, fpos_t *); char *fgets(char *, int, FILE *); int fileno(FILE *); FILE *fopen(const char *, const char *); int fprintf(FILE *, const char *, ...); int fputc(int, FILE *); int fputs(const char *, FILE *); size_t fread(void *, size_t, size_t, FILE *); FILE *freopen(const char *, const char *, FILE *); int fscanf(FILE *, const char *, ...); int fseek(FILE *, long int, int); int fseeko(FILE *, off_t, int); int fsetpos(FILE *, const fpos_t *); long int ftell(FILE *); off_t ftello(FILE *); size_t fwrite(const void *, size_t, size_t, FILE *); int getc(FILE *); int getchar(void); char *gets(char *); int getw(FILE *); int pclose(FILE *); void perror(const char *); FILE *popen(const char *, const char *); int printf(const char *, ...); int putc(int, FILE *); int putchar(int); int puts(const char *); int putw(int, FILE *); int remove(const char *); int rename(const char *, const char *); void rewind(FILE *); int scanf(const char *, ...); void setbuf(FILE *, char *); int setvbuf(FILE *, char *, int, size_t); int snprintf(char *, size_t, const char *, ...); int sprintf(char *, const char *, ...); int sscanf(const char *, const char *, ...); char *tempnam(const char *, const char *); FILE *tmpfile(void); char *tmpnam(char *); int ungetc(int, FILE *); int vfprintf(FILE *, const char *, va_list); int vprintf(const char *, va_list); int vsnprintf(char *, size_t, const char *, va_list); int vsprintf(char *, const char *, va_list); /* To make porting programs a bit easier.. WARNING: only works on GCC */ #define fprintf(BLAGH, ARGS...) printf(ARGS) /* Kernel debugging printf; all output sent to this is filtered through a kernel log level check before actually being printed. This way, you can set the level of debug info you want to see (or want your users to see). */ void dbglog(int level, const char *fmt, ...) __printflike(2, 3); /* Log levels for the above */ #define DBG_DEAD 0 /* The system is dead */ #define DBG_CRITICAL 1 /* A critical error message */ #define DBG_ERROR 2 /* A normal error message */ #define DBG_WARNING 3 /* Potential problem */ #define DBG_NOTICE 4 /* Normal but significant */ #define DBG_INFO 5 /* Informational messages */ #define DBG_DEBUG 6 /* User debug messages */ #define DBG_KDEBUG 7 /* Kernel debug messages */ /* Set debug level */ void dbglog_set_level(int level); __END_DECLS #endif /* __STDIO_H */