Como quebrar uma string a partir de um caractere?

Pessoal, o que eu quero é basicamente isso:

string a = "x+y";
string b = "x";
string c = "y";

Ele perguntou em C/C++ amigão. Vou presumir que você queira fazer isso em C++ e que a quantidade de argumentos (X e Y) seriam exatamente dois. Então você faria:

std::string str = "x+y", a, b;
size_t operator_position = str.find_first_of("+");
a = str.substr(0, operator_position);
b = str.substr(operator_position);

Agora se você quiser iterar a String pra de repente adicionar num vetor todos os ‘argumentos’, você faria mais ou menos o seguinte:

#include <vector>

std::vector<std::string> split_string(std::string str, const char* op) {
	std::vector<std::string> result;
	std::string rest = str, block;
	size_t operator_position = rest.find_first_of(op);
	while (operator_position != std::string::npos) {
		block = rest.substr(0, operator_position);
		rest = rest.substr(operator_position + 1);
		operator_position = rest.find_first_of(op);
		result.push_back(block);
	}
	
	if (rest.length() > 0)
		result.push_back(rest);
		
	return result;
}

Daí você poderia chamar a função da seguinte forma:

std::vector<std::string> result = split_str("minha+string+dividida", "+");

E ser feliz.