所以我只是做一个程序,接受输入并遇到错误;我尝试过调试,但是当我使用std :: cout时,没有消息让我调试它。控制台没有响应?
int main()
{
try {
std::ifstream text_file;
ics::safe_open(text_file,"Enter file name to analyze","C:\\Users\\Xari\\Downloads\\program1\\graph1.txt");
Graph graph = read_graph(text_file);
print_graph(graph);
while (true) {
std::string input;
std::cout << "Enter the name of a starting node (enter quit to quit) D: ";
std::cin >> input;
std::cout << "INVISIBLE DEBUGGER MESSAGE" << std::endl;
if (input != "quit")
std::cout << "Reachable from node name " << input << " = " << reachable(graph, input) << std::endl;
else
break;
}
} catch (ics::IcsError& e) {
std::cout << e.what() << std::endl;
}
return 0;
}
问题是如果我输入“a”,“b”输出很好。如果我输入c或更高,我不会收到消息回复。即使是更奇怪的是,如果我在我的意见之后说得对,我仍然会得到同样的问题,这是没有意义的。
错误最有可能在可达函数中。如果你使用调试器,你可以看到。 – Joni
您的'Graph'可能已损坏,其遍历功能有缺陷,或者'reachable'算法有缺陷。我们无法从您发布的代码中知道。你应该发布一个最小但完整的,可编译的程序来重现这个问题:在这种情况下,如果在print_graph调用之后简单地调用std :: cout << reachable(graph,“c”),你可以完全抛弃输入的东西。 ;'挂了。 –
也许尝试使用'std :: getline(std :: cin,input);'而不是'std :: cin >> input;''getline()'会等到用户输入'ENTER',然后返回整个行输入,而当用户键入一个空白字符时,'std :: cin >>'将停止阅读。 –