Tengo una variable de clase privada char name[10]
a la que me gustaría agregar la .txt
extensión para poder abrir el archivo presente en el directorio.
¿Cómo hago con esto?
Sería preferible crear una nueva variable de cadena que contenga la cadena concatenada.
Dado que es C ++, ¿por qué no usarlo en
std::string
lugar dechar*
? La concatenación será trivial:fuente
operator+=
realiza tanto una desasignación como una asignación. Las asignaciones de montón se encuentran entre las operaciones más caras que hacemos habitualmente.Si estaba programando en C, entonces asumiendo que
name
realmente es una matriz de longitud fija como dice, debe hacer algo como lo siguiente:¿Ves ahora por qué todos recomiendan
std::string
?fuente
Hay un strcat () de la biblioteca C portada que hará la concatenación de "cadenas de estilo C" por usted.
Por cierto, aunque C ++ tiene un montón de funciones para lidiar con cadenas de estilo C, podría ser beneficioso que intente crear su propia función que haga eso, algo como:
...y entonces...
... cuyo resultado es
file_name.txt
.También puede tener la tentación de escribir el suyo propio,
operator +
sin embargo, el operador IIRC se sobrecarga con solo punteros, ya que no se permiten argumentos.Además, no olvide que el resultado en este caso se asigna dinámicamente, por lo que es posible que desee llamar a eliminar para evitar pérdidas de memoria, o puede modificar la función para usar una matriz de caracteres asignada a la pila, siempre que, por supuesto, tenga la longitud suficiente.
fuente
strncat()
función que suele ser una mejor alternativastrncat
aquí es irrelevante, porque ya conocemos la longitud del segundo parámetro".txt"
. Así seríastrncat(name, ".txt", 4)
, lo que no nos gana nada.strcat (destino, fuente) se puede utilizar para concatenar dos cadenas en c ++.
Para tener una comprensión profunda, puede buscar en el siguiente enlace:
http://www.cplusplus.com/reference/cstring/strcat/
fuente
Es mejor usar la clase de cadena C ++ en lugar de la cadena C de estilo antiguo, la vida sería mucho más fácil.
si tiene una cadena de estilo antiguo existente, puede convertirla en una clase de cadena
fuente
C ++ 14
Responde a la pregunta:
fuente
fuente