std::find не выполняет оценку, как я ожидал.
У меня есть векторная лексема_, определенная как
static const std::string delimiters_[] = {" ", ",", "(", ")", ";", "=", ".", "*", "-"};
static std::vector<std::string> lexeme_(std::begin(delimiters_), std::end(delimiters_));
У меня есть оценка с использованием std::find
, определяемая как
while ( std::find(lexeme_.begin(),lexeme_.end(),std::string(&commandLine_.at(position_))) == lexeme_.end())
{
// Concat each successive alphanumeric character to 'token'
token += commandLine_.at(position_);
// Update the index into 'commandLine'
position_ += 1;
}
Предполагается, что оценка сравнивает char
в лексеме_ с char
в командной строке, похожей на это выражение Java.
!lexeme.contains(Character.toString(commandLine.charAt(position)))
Предполагается, что оценка сравнивает char
s, и если она определяет, что char
в delimiters
удовлетворяется при сравнении, тогда цикл while завершается.
Прецедент
#include<algorithm>
#include<iostream>
static const std::string delimiters_[] = {" ", ",", "(", ")", ";", "=", ".", "*", "-"};
static std::vector<std::string> lexeme_(std::begin(delimiters_), std::end(delimiters_));
std::string commandLine = "check me";
while (std::find(lexeme_.begin(),lexeme_.end(),std::string(&commandLine_.at(position_))) == lexeme_.end())
{
std::cout "I should stop printing when encountering a space ' ' << std::endl;
}