コード例 #1
0
ファイル: tcpip.cpp プロジェクト: noscripter/tcpflow
/*
 * Compare two index strings and return the result.  Called by
 * the vector::sort in sort_index.
 * --GDD
 */
bool tcpip::compare(std::string a, std::string b){
	std::stringstream ss_a(a),ss_b(b);
	long a_l,b_l;

	ss_a >> a_l;
	ss_b >> b_l;
	return a_l < b_l;
}
コード例 #2
0
ファイル: ctrlTable.cpp プロジェクト: MiyaxinPittahai/s25rttr
/// Verschiedene Sortiermöglichkeiten
int ctrlTable::Compare(const std::string &a, const std::string &b, SortType sortType)
{
	switch (sortType)
	{
	case SRT_DEFAULT:
	case SRT_STRING:
		return a.compare(b);
		break;
	// Nach Mapgrößen-String sortieren: ZahlxZahl
	case SRT_MAPSIZE:
		{
		std::stringstream ss_a(a);
		std::stringstream ss_b(b);
		char x;
		int x_a, y_a, x_b, y_b;
		ss_a >> x_a >> x >> y_a;
		ss_b >> x_b >> x >> y_b;
		if (x_a * y_a == x_b * y_b)
			return 0;
		else
			return (x_a * y_a < x_b * y_b) ? 1 : -1;
		}
		break;
	// Nach Zahl sortieren
	case SRT_NUMBER:
		{
		std::stringstream ss_a(a);
		std::stringstream ss_b(b);
		int num_a, num_b;
		ss_a >> num_a;
		ss_b >> num_b;
		if (num_a == num_b)
			return 0;
		else
			return (num_a < num_b) ? 1 : -1;
		}
		break;
	// Nach Datum im Format dd.mm.yyyy - hh:mm sortieren
	case SRT_DATE:
		{
		std::stringstream ss_a(a);
		std::stringstream ss_b(b);
		int d_a, d_b, m_a, m_b, y_a, y_b;
		char c;

		// "dd.mm.yyyy"
		ss_a >> d_a >> c >> m_a >> c >> y_a;
		ss_b >> d_b >> c >> m_b >> c >> y_b;

		if (y_a != y_b)
			return (y_a < y_b) ? 1 : -1;

		if (m_a != m_b)
			return (m_a < m_b) ? 1 : -1;

		if (d_a != d_b)
			return (d_a < d_b) ? 1 : -1;

		// " - "
		ss_a >> c;
		ss_b >> c;

		int h_a, h_b, min_a, min_b;

		// "hh:mm"
		ss_a >> h_a >> c >> min_a;
		ss_b >> h_b >> c >> min_b;

		if (h_a != h_b)
			return (h_a < h_b) ? 1 : -1;
		if (min_a != min_b)
			return (min_a < min_b) ? 1 : -1;

		return 0;
		}
		break;
	}
	return 0;
}