wvstring U8sToWcs(const vstring &src){ wvstring ret; const int nConvLen = ::MultiByteToWideChar(CP_UTF8, 0, src.c_str(), src.size(), nullptr, 0); if(nConvLen > 0){ ret.resize(nConvLen); ret.resize(::MultiByteToWideChar(CP_UTF8, 0, src.c_str(), src.size(), &ret[0], nConvLen)); } return std::move(ret); }
/*! * @if jp * @brief 与えられた文字列リストからCSVを生成 * @else * @brief Create CSV file from the given string list * @endif */ std::string flatten(vstring sv) { if (sv.size() == 0) return ""; std::string str; for (size_t i(0), len(sv.size() - 1); i < len; ++i) { str += sv[i] + ", "; } return str + sv.back(); }
int rfind(vstring v, std::string str) { int start = v.size() - 1; for(int i = start; i >= 0; --i) { if(v[i] == str) { return start - i; } } return -1; }
int find(vstring v, std::string str) { int iLim = v.size(); for(int i = 0; i < iLim; ++i) { if(v[i] == str) { return i; } } return -1; }
/*! * @if jp * @brief 文字列リスト中にある文字列が含まれるかどうかを判断する * @else * @brief Include if a string is included in string list * @endif */ bool includes(const vstring& list, std::string value, bool ignore_case) { if (ignore_case) { toLower(value); } for (int i(0), len(static_cast<int>(list.size())); i < len; ++i) { std::string str(list[i]); if (ignore_case) { toLower(str); } if (str == value) return true; } return false; }
// handle the context of the conversation // (the previous replies of the chatterbot) void Eliza::verify_context(vstring vContext) { m_bGoodContext = 0; size_t nNum = vContext.size(); if(nNum == 0) { m_bGoodContext = 1; return; } for(int i = 0; i < nNum; ++i) { if(is_template(vContext[i])) { findSymbol(vContext[i]); replace(vContext[i], m_sSymbol, m_sSuffix); } if(m_sPrevResponse == vContext[i]) { m_bGoodContext = 1; break; } } }
void Eliza::saveTopic(const vstring vList, const std::string sSymbol) { int listSize = vList.size(); for(int i = 0; i < listSize; ++i) { scriptfile << sSymbol << vList[i] << std::endl; } }
void Eliza::add_response(vstring v) { int size = v.size(); for(int i = 0; i < size; ++i) { response_list.push_back(v[i]); } }