A continuación se presenta el fragmento de código de lo que hice, puede algún cuerpo me ayude en los que he codificado erróneamente que:¿Por qué la cadena == cadena de comparación está fallando?
#include<iostream>
using namespace std;
void modifyName(string &name)
{
size_t sep = string::npos;
sep = name.find_first_of(".");
if(sep != string::npos) { name[sep] = '\0'; }
}
int main()
{
string name("test.rtl");
string someName("test");
modifyName(name);
if(someName == name) //Failing??
cout<<"MATCHED"<<endl;
return 0;
}
+1 por un corto independiente ejemplo, – Flexo
Cuando probé la depuración de este llegué a conocer que el tribunal << name.c_str() << "..." << nombre << endl; outputs: test ... testrtl, el operador de cout '<<' funciona de forma diferente en los objetos de cadena y char *. Simplemente sentí que vale la pena compartir :). – pankiii
Cuando usa 'name.c_str()' está creando una cadena c-style a partir de 'std :: string' - las cadenas estilo c tienen terminación nula. Como había insertado un nulo en el medio de la cadena, esto termina cuando c-styled. Pero un 'std :: string' puede contener cualquier valor, incluido nulo; sin embargo, un nulo generalmente no se puede imprimir, por lo que no se imprimirá ... pero tampoco significará el final de la secuencia de caracteres. – icabod