Попытка устранить ошибку, возникающую в результате использования функции std :: count. Я прошел через шаблон в xutility, и кажется, что типы совпадают, поэтому я не уверен, почему я получаю эти ошибки. Я использую функцию подсчета в двух случаях, и они выдают две разные ошибки.
Первая ошибка:
C2446 '==': no conversion from 'const char [2]' to 'int'
Вот код, который создает эту ошибку (это начало компаратора для сортировки):
struct vectorComparator
{
bool operator ()(const string& string1, const string& string2)
{
if (count(string1.begin(), string1.end(), "!") < count(string2.begin(), string2.end(), "!") + 1)
return string1 < string2;
return string1 < string2;
}
};
Вторая ошибка очень похожа:
C2446 '==': no conversion from 'const _Ty' to 'int'
Вот код, который создает эту ошибку:
string myClass::myFunction(string parentToken)
{
string messageChunk{};
vector<string> tokens;
for (auto it = messageMap.begin(); it != messageMap.end(); ++it)
if (it->first.find(parentToken) != string::npos &&
count(it->first.begin(), it->first.end(), elementDelimiter) == count(parentToken.begin(), parentToken.end(), elementDelimiter) + 1)
{
tokens = explode(elementDelimiter, it->first);
messageChunk += (messageChunk.size() > 0 ? "," : "") + '\"' + tokens[tokens.size()] + "\":" + buildValueString(it->second);
messageMap.erase(it);
}
messageChunk = '{' + messageChunk + '}';
if (arrayTokens.find(tokens[tokens.size() - 1]) != string::npos)
messageChunk += '\"' + tokens[tokens.size() - 1] + "\":[" + messageChunk + ']';
else messageChunk += '\"' + tokens[tokens.size() - 1] + "\":" + messageChunk;
return messageChunk;
}
С Понимая, что я новичок в этом, и я уверен, что есть много способов упростить код (и я приму весь ввод), я прежде всего ищу помощь в устранении этих двух ошибок. Кажется, это проблема типа, но я не могу ее решить. Во втором примере elementDelimiter определяется как const char * и равен «!». Спасибо за любую помощь или руководство, которое вы можете предоставить!