本文整理汇总了C++中StringTokenizer::setLine方法的典型用法代码示例。如果您正苦于以下问题:C++ StringTokenizer::setLine方法的具体用法?C++ StringTokenizer::setLine怎么用?C++ StringTokenizer::setLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringTokenizer
的用法示例。
在下文中一共展示了StringTokenizer::setLine方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readRHS
void MPSReader::readRHS(){
StringTokenizer *lineTokens = new StringTokenizer(line);
string nomeVetorRHS;
string nomeFuncao;
string valorTermoLivre;
if (lineTokens->nextToken().compare("RHS") == 0){
line = fileReader->readLine();
while (line.compare("BOUNDS") != 0 && line.compare("") != 0 && line.compare("ENDATA") != 0){
lineTokens->setLine(line);
//Ler no minimo 3 tokens
//Nome variavel / Nome Funcao|Restricao / Valor variavel
if (this->VetorRHSPossuiNome){
nomeVetorRHS = lineTokens->nextToken();
nomeFuncao = lineTokens->nextToken();
valorTermoLivre = lineTokens->nextToken();
}
else{
nomeFuncao = lineTokens->nextToken();
valorTermoLivre = lineTokens->nextToken();
}
//Se nomeFuncao for o nome da funcao objetivo, atribuir variaveis nela
if (nomeFuncao.compare(funcao->Nome) == 0){
funcao->TermoLivre = stof(valorTermoLivre.c_str());
}
//Se nao, atribuir variaveis a restricao
else {
funcao->setTermoLivreRestricao(nomeFuncao, stof(valorTermoLivre.c_str()));
}
//Se tiver mais tokens, ler mais duas colunas
//Nome Variavel e Valor Variavel, obedecendo as mesmas regras anteriores
if (lineTokens->hasToken()){
nomeFuncao = lineTokens->nextToken();
valorTermoLivre = lineTokens->nextToken();
if (nomeFuncao.compare(funcao->Nome) == 0){
funcao->TermoLivre = stof(valorTermoLivre.c_str());
}
//Se nao, atribuir variaveis a restricao
else {
funcao->setTermoLivreRestricao(nomeFuncao, stof(valorTermoLivre.c_str()));
}
}
line = fileReader->readLine(); //ler nova linha ao final
}
}
}
示例2: readCOLUMNS
void MPSReader::readCOLUMNS(){
StringTokenizer *lineTokens = new StringTokenizer(line);
string nomeFuncao;
string nomeVariavel;
string valorVariavel;
if (lineTokens->nextToken().compare("COLUMNS") == 0){
line = fileReader->readLine();
while (line.compare("RHS") != 0){
lineTokens->setLine(line);
//Ler no minimo 3 tokens
//Nome variavel / Nome Funcao|Restricao / Valor variavel
nomeVariavel = lineTokens->nextToken();
nomeFuncao = lineTokens->nextToken();
valorVariavel = lineTokens->nextToken();
//Se nomeFuncao for o nome da funcao objetivo, atribuir variaveis nela
if (nomeFuncao.compare(funcao->Nome) == 0){
funcao->addVariavel(nomeVariavel, stof(valorVariavel.c_str()));
}
//Se nao, atribuir variaveis a restricao
else {
funcao->addVariavelRestricao(nomeFuncao, nomeVariavel, stof(valorVariavel.c_str()));
}
//Se tiver mais tokens, ler mais duas colunas
//Nome Variavel e Valor Variavel, obedecendo as mesmas regras anteriores
if (lineTokens->hasToken()){
nomeFuncao = lineTokens->nextToken();
valorVariavel = lineTokens->nextToken();
//Se nomeFuncao for o nome da funcao objetivo, atribuir variaveis nela
if (nomeFuncao.compare(funcao->Nome) == 0){
funcao->addVariavel(nomeVariavel, stof(valorVariavel.c_str()));
}
//Se nao, atribuir variaveis a restricao
else {
funcao->addVariavelRestricao(nomeFuncao, nomeVariavel, stof(valorVariavel.c_str()));
}
}
line = fileReader->readLine(); //ler nova linha ao final
}
}
}
示例3: readROWS
void MPSReader::readROWS(){
line = fileReader->readLine();
StringTokenizer *lineTokens = new StringTokenizer(line);
string desigualdade;
string nomeFuncao;
if (lineTokens->nextToken().compare("ROWS") == 0){
line = fileReader->readLine();
while (line.compare("COLUMNS") != 0){
lineTokens->setLine(line);
desigualdade = lineTokens->nextToken();
nomeFuncao = lineTokens->nextToken();
//Objetivo
if (desigualdade.compare("N") == 0){
funcao->Nome = nomeFuncao;
}
//Igualdade
else if (desigualdade.compare("E") == 0){
funcao->addRestricao(nomeFuncao);
funcao->setDesigualdadeRestricao(nomeFuncao, Igual);
}
//Menor ou igual
else if (desigualdade.compare("L") == 0){
funcao->addRestricao(nomeFuncao);
funcao->setDesigualdadeRestricao(nomeFuncao, MenorOuIgual);
}
//Maior ou igual
else if (desigualdade.compare("G") == 0){
funcao->addRestricao(nomeFuncao);
funcao->setDesigualdadeRestricao(nomeFuncao, MaiorOuIgual);
}
else
throw 10; //Erro de sintaxe
line = fileReader->readLine();
}
}
}
示例4: readBOUNDS
void MPSReader::readBOUNDS(){
/* type meaning
---------------------------------------------------
LO lower bound b <= x (< +inf)
UP upper bound (0 <=) x <= b
FX fixed variable x = b
FR free variable -inf < x < +inf
MI lower bound -inf -inf < x (<= 0)
PL upper bound +inf (0 <=) x < +inf
BV binary variable x = 0 or 1
LI integer variable b <= x (< +inf)
UI integer variable (0 <=) x <= b
SC semi-cont variable x = 0 or l <= x <= b
l is the lower bound on the variable
If none set then defaults to 1*/
//Como se trata de um bloco opcional dos problemas,
//Apenas tratarei os tipos LO e UP.
StringTokenizer *lineTokens = new StringTokenizer(line);
string boundType;
string boundName;
string nomeVariavel;
string boundValue;
string auxRestName; //sera criada uma nova restricao se a fronteira for valida
Desigualdade tipoDesigualdade;
if (lineTokens->nextToken().compare("BOUNDS") == 0){
line = fileReader->readLine();
while (line.compare("ENDATA") != 0){
lineTokens->setLine(line);
//Ler no minimo 3 tokens
//Nome variavel / Nome Funcao|Restricao / Valor variavel
boundType = lineTokens->nextToken();
boundName = lineTokens->nextToken();
nomeVariavel = lineTokens->nextToken();
boundValue = lineTokens->nextToken();
if (boundType.compare("LO") == 0){
tipoDesigualdade = MaiorOuIgual;
}
else if (boundType.compare("UP") == 0){
tipoDesigualdade = MenorOuIgual;
}
auxRestName = funcao->addRestricao();
//Configurar nova restricao
funcao->addVariavelRestricao(auxRestName, nomeVariavel, 1.0);
funcao->setDesigualdadeRestricao(auxRestName, tipoDesigualdade);
funcao->setTermoLivreRestricao(auxRestName, stof(boundValue.c_str()));
line = fileReader->readLine(); //ler nova linha ao final
}
}
}
示例5: tokenize
//...................................................... tokenize ...
bool FileTokenizer::tokenize() {
ifstream currentFile; //file to be tokenized
string inputLine; //line that will be read from the file
StringTokenizer * tkn; //String tokenizer
int i; //index variable
string token; //token currently extracted
bool res = true;
tkn = new StringTokenizer();
tkn->setSeparators(currentSeparators);
// [1] Initialize position and open the file to be tokenized
tokenPos = 0;
tokens.clear();
currentFile.open(currentFileName.c_str(), std::ifstream::in);
if (currentFile.fail()) {
std::cerr << "Can't open file [" << currentFileName << "]" << std::endl;
res = false;
} else {
// [2] Read input while the file has not been finished, and tokenize
while (currentFile.good()) {
//Get next line
std::getline(currentFile, inputLine);
#ifndef _WIN32
inputLine = StringUtilities::removeAtEnd(inputLine, __CRLF);
#endif
//Tokenize
tkn->setLine(inputLine);
tkn->tokenize(true);
/*
* Add tokens to the token buffer.
*
* Tokens are added while they are "correct" tokens. A correct token is a
* token that is not empty, does not contain "#", and does not appear
* after a "#" character in the line.
*/
i = 0;
while (i < tkn->getNumTokens()) {
token = tkn->getToken(i);
if (token == "") {
//The token is blank. Do not add but check next token
i = i + 1;
} else {
//The token is not blank, and has no comments inside it
tokens.push_back(token);
i = i + 1;
}
}
}
}
currentFile.close();
//Free memory of the ATMStringTokenizer object
delete tkn;
return res;
}