Estoy tratando de cout un basic_string<TCHAR>
. Pero cout está arrojando un error. ¿Puedo saber cómo hacerlo?Cómo citar el std :: basic_string <TCHAR>
Respuesta
TCHAR
es una definición de winapi para el tipo de carácter utilizado por su aplicación. Si tiene el carácter configurado como caracteres de varios bytes, será char
. Si lo tiene configurado en Unicode, será wchar_t
.
Si es wchar_t
, necesita usar std::wcout
. De lo contrario, simplemente std::cout
debería estar bien.
lo general, ayuda a explicar también lo que los errores que está recibiendo, pero lo más probable es que estamos tratando de insertar un std::basic_string<wchar_t>
en std::cout
, y probablemente no es una sobrecarga operator<<
para eso.
Como dijo dauphic, std::wcout
es para cuerdas anchas y std::cout
para angostas. Si usted quiere ser capaz de compilar para cualquier tipo de cadena (TCHAR
está destinado a hacer este tipo de cosas más fácil) algo como esto a veces hace la vida más fácil:
#if defined(UNICODE) || defined(_UNICODE)
#define tcout std::wcout
#else
#define tcout std::cout
#endif
Con esto en lugar de utilizar tcout lugar.
También podría declarar tcout como una referencia a la transmisión correcta, en lugar de usar desagradables #defines. :-) –
@Bo Persson: Ahh, un puritano. :-) – Steve
Como se ha mencionado @Bo Persson, otra manera de definir un tipo de tcout
estaría utilizando referencias con los tipos de trenes correctas. Aunque hay algunas cosas más que considerar al hacer eso, ya que terminará fácilmente con problemas de vinculador debido a las definiciones múltiples o faltantes.
Lo que funciona para mí está declarando estos tipos como referencias externas en una cabecera y definiéndolos vez en un archivo de origen. Esto también funciona en un encabezado precompilado (stdafx).
Cabecera
namespace std
{
#ifdef UNICODE
extern wostream& tcout;
#else
extern ostream& tcout;
#endif // UNICODE
}
Implementación
namespace std
{
#ifdef UNICODE
wostream& tcout = wcout;
#else
ostream& tcout = cout;
#endif // UNICODE
}
- 1. std :: vector <std::string> crash
- 2. ¿Cuál es la diferencia entre std :: string y std :: basic_string? ¿Y por qué se necesitan ambos?
- 3. Cómo citar "* /" en JavaDocs
- 4. Conversión de basic_string a jstring
- 5. ¿Es razonable usar std :: basic_string <t> como un búfer contiguo cuando se dirige a C++ 03?
- 6. Ordenar un std :: vector <std :: pair <std :: string, bool >> por la cadena?
- 7. Cómo citar valores utilizando group_concat
- 8. Cómo guardar `std :: vector <uchar>` en `std :: ostream`?
- 9. Longitud STL basic_string con caracteres nulos
- 10. Soporte para const_string en el operador std :: ostream <<
- 11. C++ std :: stringstream operador << sobrecarga
- 12. Cómo "fundido" un std :: vector <char> std :: vector <wchar_t>
- 13. ¿Para qué sirve el atributo citar?
- 14. Al exportar la plantilla STL std :: basic_string desde DLL, recibo un error LNK2005
- 15. ¿Se puede aprovechar std :: basic_string para implementar una cadena que tenga una limitación de longitud?
- 16. Cómo citar nombres de columna con Zend_Db?
- 17. ¿Cómo puedo citar cadenas en SASS?
- 18. std :: lista <std :: unique_ptr <T>>: que pasa a su alrededor
- 19. Clang, std :: shared_ptr y std :: menos/operador <
- 20. Convierte std :: string en std :: vector <char>
- 21. const std :: map <boost :: tuples :: tuple, std :: string>?
- 22. getline en istream y getline en basic_string
- 23. ¿Cómo derivar de C++ std :: basic_ostream y hacer que el << operador sea virtual?
- 24. std :: array <char, N> std :: string
- 25. ¿Por qué std :: sub_match <T> hereda públicamente de std :: pair <T, T>?
- 26. std :: cin.ignore (std :: numeric_limits <std :: streamsize> :: max(), '\ n') de error al utilizar # include <Windows.h>
- 27. std :: array <T> inicialización
- 28. ¿Cómo inicializar e imprimir una std :: wstring?
- 29. ¿Debo citar números en SQL?
- 30. std: numeric_limits <double> :: epsilon definition
¿Puede dar un código de ejemplo, y también el error exacto que está recibiendo? –
Cuando se trata de un error, indique lo que desea lograr, el código exacto donde se informa el error y el error del compilador/vinculador. Esa información ayudará a otros a ayudarlo. –