Используйте двойные кавычки вместо одинарных.
strcat(filename, ".txt");
В C ++ одинарные кавычки обозначают символ single , двойные кавычки указывают последовательность символов (строка). Добавление L
перед литералом указывает, что он использует широкий набор символов:
".txt" // <--- ordinary string literal, type "array of const chars"
L".txt" // <--- wide string literal, type "array of const wchar_ts"
'a' // <--- single ordinary character, type "char"
L'a' // <--- single wide character, type "wchar_t"
Обычным строковым литералом обычно является ASCII, в то время как широкий строковый литерал обычно представляет собой некоторую форму кодировки Unicode (хотя язык C ++ не гарантирует этого - проверьте документацию компилятора).
В предупреждении компилятора упоминается int
, поскольку стандарт C ++ (2.13.2 / 1) гласит, что символьные литералы, содержащие более одного char
, на самом деле имеют тип int
, который имеет значение, определенное реализацией.
Если вы используете C ++, лучше использовать std::string
вместо этого, как Mark B предлагает:
#include <iostream>
#include <string>
int main(){
std::string filename;
std::cout << "Type in the filename: ";
std::cin >> filename;
filename += ".txt";
std::cout << filename;
}