Ваша большая проблема в том, что вы смешиваете типы данных. Используйте либо char
и связанные функции, либо wchar
и связанные функции. Если вам нужно смешать их, используйте функцию преобразования. Это не имеет больше смысла, чем пытаться передать значение с плавающей точкой функции, нуждающейся в строке. (Компилятор должен быть в состоянии перехватить обе проблемы, поскольку объявление wprintf
выглядит примерно так: int wprintf(const wchar_t *, ...)
.)
Другая, более незначительная проблема заключается в том, что printf
и такие функции не подходят для вывода общих строк, поскольку, если в строках есть знаки процента, вы получите неопределенное поведение. Используйте printf("%s",...)
или puts(...)
или связанные функции.
И, поскольку это C ++, вам будет гораздо лучше использовать класс std::string
. Это не идеально, но гораздо лучше, чем струны в стиле C.
Кроме того, нам поможет сообщение об ошибке. Вы даже не сказали нам, является ли это ошибкой компилятора или ошибкой во время выполнения.