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

¿Fue útil?

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)
{
...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top