Я прочитал xml-файл в char [] и пытаюсь сравнить каждый элемент в этом массиве с определенными символами, такими как «<» и «>». Шаблон массива «test» - это всего лишь массив одного элемента и содержит сравниваемый символ (мне пришлось сделать это так, или метод strcmp дал бы мне ошибку об преобразовании char в cons char *). Однако что-то не так, и я не могу понять это. Вот что я получаю:
< сравнивается с: значение < STRCMP: 44Сравнение символов в массиве символов с strcmp
Любая идея, что происходит?
char test[1];
for (int i=0; i<amountRead; ++i)
{
test[0] = str[i];
if(strcmp(test, "<") == 0)
cout<<"They are equal"<<endl;
else
{
cout<<test[0]<< " is being compare to: "<<str[i]<<" strcmp value= "<<strcmp(test, "<") <<endl;
}
}
Вы должны понимать ошибки, такие как 'char',' const char * 'и исправлять это с пониманием, а не взламывать его. Кроме того, показывая нам, что результат, который вы получаете, не является ошибкой для нас, мы понятия не имеем, что он на самом деле должен сказать. :) Наконец, это C++! Используйте 'std :: string' и упростите свою жизнь. – GManNickG
Вы сравниваете один элемент за раз, вам не нужно сравнивать строки. сравните char вместо этого, ''<' == str [i]' – Anycorn
Я бы использовал класс string, но я читаю xml-файл, который потенциально не может иметь пробелов (т.е. asdfsaf asdfsaf Так что я решил, было бы делать символ по характеру. В любом случае «'<' == str [i]" закончил работу (хотя я поклялся, что я уже пробовал это). Спасибо. –
Isawpalmetto