gpt4 book ai didi

c++ - 调试我的程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:20 24 4
gpt4 key购买 nike

每次我运行此方法时,它都会不断返回我输出的错误消息。例如:用户输入:

display <table.txt> sortedby <ID>

这是我希望用户在调用显示函数时使用的正确语法。但是当用户使用正确的语法键入显示时,它会输出我指定的错误消息。

 Syntax error: display <intable> sortedby <col_name>

总的来说,在这个方法中,我希望表格以漂亮的格式显示。但它不会超过 if 语句。我想知道是否有我忽略的东西可能会返回我的 error_message。

 void display(Lexer lexer) {
Table table; // create a table from the created table class
vector<Token> tokvec = lexer.tokenize();



// expect [IDENT | STRING] sortedby IDENT
if (tokvec.size() != 4 ||
(tokvec[0].type != IDENT && tokvec[1].type != STRING) ||
tokvec[2].value != "sortedby" || tokvec[3].type != IDENT){
error_return("Syntax error: display <intable> sortedby <col_name>");
return;
}


string fn = tokvec[1].value; // name of the file
string col_name = tokvec[3].value;
table.set_input(fn);
table.scan_input();
table.set_index(col_name);
table.sort();
table.display();

最佳答案

我建议您打印出 if 语句中比较的每个值。其中之一是正确的,而它应该是错误的,所以你需要找出它是哪一个。一旦你这样做了,找出哪个值是不应该的,并追踪错误的来源。

像这样:

cout << tokvec.size() <<  " doesn't equal " << 4 << " - " << tokvec.size() != 4 << endl;
cout << tokvec[0].type << " doesn't equal " << IDENT << " - " << tokvec[0].type != IDENT << endl;

等等

这将打印出每个陈述,然后是它是否正确。应该说清楚问题出在哪里。

关于c++ - 调试我的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com