operator << не является оператором конкатенации, это специальный перегруженный оператор по типам потоков, позволяющий отправлять данные в поток. Это работает только если вы используете поток. </p>
У вас есть два варианта здесь. Во-первых, вы можете использовать std :: wstring:
std::wstring(L"Initial Catalog=DatabaseName;Data Source=") + SERVER_NAME + L";";
Или вы можете использовать wstringstream (из заголовка <sstream>
):
std::wstringstream stream;
stream << L"Initial Catalog=DatabaseName;Data Source=" << SERVER_NAME << L";"
Используйте stream.str()
, чтобы получить результирующую строку в этом случае. Преимущество потокового подхода заключается в том, что вы можете использовать его, даже если не все объекты, которые вы хотите объединить, уже являются строками.
Если вы печатаете в существующий поток (например, wcout), вы можете просто пропустить поток строк и использовать его напрямую, конечно.
Как указали другие ответы, вы можете использовать L"Initial Catalog=DatabaseName;Data Source=" SERVER_NAME L";"
, если SERVER_NAME является константой create с #define. Если это const wchar_t*
, это не сработает.