Tenho uma variável de classe privada char name[10]
à qual gostaria de adicionar a .txt
extensão para poder abrir o arquivo presente no diretório.
Como faço para fazer isso?
Seria preferível criar uma nova variável de string que contenha a string concatenada.
Já que é C ++, por que não usar em
std::string
vez dechar*
? A concatenação será trivial:fonte
operator+=
executa uma desalocação e uma alocação. As alocações de heap estão entre as operações mais caras que normalmente fazemos.Se você estava programando em C, então presumindo que
name
realmente é uma matriz de comprimento fixo como você diz, você deve fazer algo como o seguinte:Você vê agora por que todo mundo recomenda
std::string
?fonte
Há uma função strcat () da biblioteca C portada que fará a concatenação de "string de estilo C" para você.
BTW, embora C ++ tenha um monte de funções para lidar com strings de estilo C, pode ser benéfico para você tentar criar sua própria função que faça isso, algo como:
...e depois...
... o resultado disso é
file_name.txt
.Você também pode ficar tentado a escrever seu próprio,
operator +
no entanto, o operador IIRC sobrecarrega apenas com ponteiros, pois os argumentos não são permitidos.Além disso, não se esqueça de que o resultado neste caso é alocado dinamicamente, então você pode querer chamar delete nele para evitar vazamentos de memória, ou você pode modificar a função para usar array de caracteres de pilha alocada, desde que tenha comprimento suficiente.
fonte
strncat()
função que geralmente é uma alternativa melhorstrncat
é irrelevante aqui, porque já sabemos o comprimento do segundo parâmetro".txt"
. Assim seriastrncat(name, ".txt", 4)
, o que não nos ganha nada.strcat (destino, origem) pode ser usado para concatenar duas strings em C ++.
Para ter um entendimento profundo, você pode pesquisar no seguinte link-
http://www.cplusplus.com/reference/cstring/strcat/
fonte
É melhor usar a classe string C ++ em vez da string C no estilo antigo, a vida seria muito mais fácil.
se você tem uma string de estilo antigo existente, você pode converter para a classe de string
fonte
C ++ 14
Responda à pergunta:
fonte
fonte