Beispiel #1
0
	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();
 }
Beispiel #3
0
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;
}
Beispiel #4
0
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;
  }
Beispiel #6
0
// 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;
		}
	}
}
Beispiel #7
0
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;
	}
}
Beispiel #8
0
void Eliza::add_response(vstring v) {
	int size = v.size();
	for(int i = 0; i < size; ++i) {
		response_list.push_back(v[i]);
	}
}