C ++ tstring comparar
Pregunta
Tengo esta variable dirpath2 donde almaceno el nombre del directorio más profundo de un camino:
typedef std::basic_string<TCHAR> tstring;
tstring dirPath = destPath;
tstring dirpath2 = dirPath.substr(destPathLenght - 7,destPathLenght - 1);
Quiero ser capaz de compararlo con otra cadena, algo como:
if ( _tcscmp(dirpath2,failed) == 0 )
{
...
}
He intentado muchas cosas pero nada parece funcionar. ¿Puede alguien decirme cómo hacer esto o qué estoy haciendo mal?
Por favor, tenga en cuenta no sé casi nada acerca de C ++ y todo esto me está volviendo loco.
Gracias de antemano
Solución
std::basic_string<T>
tiene un operator==
sobrecargado, intente lo siguiente:
if (dirpath2 == failed)
{
...
}
Alternativamente, usted podría hacer como esto. Como std::basic_string<T>
no tiene un operador de conversión implícita a const T*
, es necesario utilizar la función miembro c_str
para convertir a const T*
:
if ( _tcscmp(dirpath2.c_str(), failed.c_str()) == 0 )
{
...
}
Otros consejos
¿Por qué utiliza _tcscmp
con una cadena de C ++? Sólo lo utilizan de operador de igualdad orden interna:
if(dirpath2==failed)
{
// ...
}
Para consultar todas las proporcionadas y métodos que se pueden utilizar con el cuerdas STL.
En general, si utiliza cadenas de C ++ no es necesario para utilizar las funciones de cadena C; Sin embargo, si usted necesita para pasar C ++ cadenas de funciones que esperan C-cadenas que puede utilizar el c_str()
método para obtener un const
C-cadena con el contenido de la instancia de cadena de C ++ especificado
Por cierto, si usted sabe "casi casi nada acerca de C ++", debe realmente conseguir un libro de C ++ y leerlo, incluso si provienen de C.
std :: basic_string tiene un operador ==. Utilice la plantilla de cadena classs:
if (dirpath2 == failed)
{
...
}