当前位置: 首页>>代码示例>>C++>>正文


C++ StringTokenizer::setInput方法代码示例

本文整理汇总了C++中StringTokenizer::setInput方法的典型用法代码示例。如果您正苦于以下问题:C++ StringTokenizer::setInput方法的具体用法?C++ StringTokenizer::setInput怎么用?C++ StringTokenizer::setInput使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在StringTokenizer的用法示例。


在下文中一共展示了StringTokenizer::setInput方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main (int argc, char * const argv[]) {	
	StringTokenizer st;
	
	fstream infile;
	infile.open(DB_FILE_PATH);
	bool fromFile = true;
	
	while (true) {		
		fromFile = !infile.eof();
		
		if (fromFile)
			getline(infile, input, '\n');
		else
			getline(cin, input, '\n');
		
		st.setInput(input);
		
		cmd = st.next();//get command
		
////////////////////////////////SELECT///////////////////////////////////////		
		if (eq(cmd,SELECT_CMD)) {
			
			
			////////////////TEST
			fstream File;
			File.open(SELECT_TEST_PATH, ios::out);
			////////////////END TEST
			
			
			vector<string> rowNames;
			token = st.next();
						
			while (!ueq(token,FROM_EXPR)) {
				rowNames.push_back(token);
				token = st.next();
			}
			
			tableName = st.next();			
			Table t = db.tables[tableName];
					
			if (rowNames.size() == 1 && eq(rowNames.at(0), ALL_LITERAL)) { //add all if *
				rowNames.clear();
				for (int i = 0; i < t.nameOfCols.size(); i++ ){
					rowNames.push_back(t.nameOfCols[i]);
				}
			}
			
			vector<string> conditions;			
			if (st.hasNext()) {
				token = st.next();
			}
			
			if (eq(token, WHERE_EXPR)) {
				while (st.hasNext()) {
					token = st.next();
					if(!ueq(token, AND_STATEMENT))
					conditions.push_back(token);
				}
			}			
						
			for (int i = 0; i < t.rows.size(); i++) {
				db.r = t.rows.at(i);
				
				bool showRow = true;
				
				for (int j = 0; j < conditions.size(); j++) {
					string colName = conditions.at(j); j++;
					string condType = conditions.at(j); j++;
					string condValue = conditions.at(j);
					string cellValue = db.r.at(t.colNames[colName]);
					
					if (eq(condType, CND_EQ)) {
						showRow = eq(condValue, db.r.at(t.colNames[colName]));
					}
					
					if (eq(condType, CND_GE) || eq(condType, CND_LE)) {
						istringstream s0(cellValue);
						int i0;
						s0 >> i0;
						istringstream s1(condValue);
						int i1;
						s1 >> i1;
						
						if (eq(condType, CND_GE)) {
							showRow = (i0 > i1);
						}
						
						if (eq(condType, CND_LE)) {
							showRow = (i0 < i1);
						}
					}
					
					if (!showRow)
						break;
				}
				
				if(showRow){
					for (int j = 0; j < rowNames.size(); j++) {
						cout << rowNames.at(j) << " = " << db.r.at(t.colNames[rowNames.at(j)]) << " ";
					}
//.........这里部分代码省略.........
开发者ID:0-1-0,项目名称:MyCppDB,代码行数:101,代码来源:main.cpp


注:本文中的StringTokenizer::setInput方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。