У меня вопрос, как я могу разбить строку в C ++? Например, у меня есть
string str = "[ (a*b) + {(c-d)/f} ]"
Как я могу сделать это несколькими простыми способами
Это называется лексический анализ (получение токенов из некоторой последовательности или потока символов) и должен сопровождаться разбор. Прочитайте, например, первая половина Книга Дракона.
Может быть Разбор LL тебе достаточно ….
Есть много инструментов для этого, смотрите этот вопрос (Я бы предложил ANTLR). Вы, вероятно, должны построить некоторые абстрактное синтаксическое дерево в какой-то момент.
Но это может не стоить усилий. Рассматривали ли вы встраивание некоторых скриптовый язык в вашем приложении, например Lua (увидеть этот а также этот…), или же гну хитрость, питон, так далее…
Вот способ, которым я должен сделать это,
string expression = "[ (a*b) + {(c-d)/f} ]" ;
string token ;
// appending an extra character that i'm sure will never occur in my expression
// and will be used for splitting here
expression.append("~") ;
istringstream iss(expression);
getline(iss, token, '~');
for(int i = 0 ; i < token.length() ; i++ ) {
if(token[i] != ' ' ) {
cout<<token[i] << ",";
}
}
Выход будет: [, (А, *, Ь,), +, {, (, с, -, д,), /, е,},],