std::find が期待どおりに評価されません。
次のように定義されたベクトル lexeme_ があります
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;
}
評価は、この Java 式と同様にchar
、lexeme_ 内の aと commandLine 内の a を比較することになっています。char
!lexeme.contains(Character.toString(commandLine.charAt(position)))
評価は s を比較することになっており、比較でinが満たされてchar
いると判断された場合、while ループは終了します。char
delimiters
テストケース
#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;
}