sprintf concatenate c++ c string concatenation

concatenate - strcat c++



Concatenando cadenas en macros-C++ (2)

El compilador concatenará automáticamente las cadenas adyacentes:

#define ROOT_PATH "/home/david/" #define INPUT_FILE_A ROOT_PATH "data/inputA.bin"

O más genérico:

#define INPUT_FILE_DETAIL(root,x) root #x #define INPUT_FILE(x) INPUT_FILE_DETAIL(ROOT_PATH "data/", x)

¿Cuál es la forma más fácil de concatenar cadenas definidas en macros? Es decir, el pseudo código que estoy buscando sería como:

#define ROOT_PATH "/home/david/" #define INPUT_FILE_A ROOT_PATH+"data/inputA.bin" #define INPUT_FILE_B ROOT_PATH+"data/inputB.bin" ... #define INPUT_FILE_Z ROOT_PATH+"data/inputZ.bin"

La única manera que conozco es usar strcat en el código, o usar la clase de cadena y luego el método c_str, pero puede causar problemas cuando tengo muchos archivos de entrada. Me gustaría usar INPUT_FILE_A, etc. directamente y no tener muchas variables locales. ¿Existe una forma correcta de hacer esto?

Gracias.


Shell estaba "comiendo" las citas. Entonces, la siguiente línea tenía que usar:

-DROOT_PATH=/"some-string"/