我的代码中的函数似乎没有运行,谁能说出原因?

A function in my code doesn't seem to be running, can anyone tell why?

本文关键字:运行 代码 函数 我的      更新时间:2023-10-16

我正在构建一个相当简单的通讯录程序来提高我的C++技能。请记住,我没有包含所有的代码,因为这篇文章会很庞大。

我面临的问题是,在下面显示的代码区域中,当在if语句中到达contactCreator()时,它实际上并没有运行。

int mainInput;
ofstream initialStream("contacts.txt", ofstream::app);
initialStream.close();
while(mainInput != -1){
    system("cls");
    logoHeader();
    cout << endl;
    cout << "--- MAIN MENU -----------------" << endl;
    cout << "[0] Create New Contact" << endl;
    cout << "[1] View Existing Contacts" << endl;
    cout << "[2] View or Edit Data Fields" << endl;
    cout << "-------------------------------" << endl;
    cout << "Press ENTER without inputting" << endl;
    cout << "anything to EXIT Contact Book." << endl;
    cout << "-------------------------------" << endl;
    cout << "Enter Selection: ";
    mainInput = menuInput();
    if(mainInput == 0){
        //This is the function that isn't running when it's supposed to.
        contactCreator();
    }else if(mainInput == 1){
        contactViewer();
    }else if(mainInput == 2){
        dataFieldViewer();
    }else if(mainInput < -1 || mainInput > 2){
        invalidInputError();
    }
}
return 0;

关于contactCreator()的一些信息:

  • 它是无效的,所以根据我有限的C++知识,这个问题并不缺少返回语句
  • 我检查了一下以确保mainInput是0,而且确实是
  • 函数在主函数之前在程序的顶部声明。没问题
  • 我检查了函数名称的拼写。据我所知,所有的例子都是正确的

有人能看到我是否遗漏了一些明显的东西吗?我对C++还很陌生,所以我自己找不到任何语法错误。我在程序中创建的所有其他函数都能完美运行。

我试着在网上搜索我的问题,但我有点不知道如何简单地描述它。为什么contactCreator()没有按预期运行?

此外,如果有帮助的话,下面是contactCreator()函数的内容。:)

string initialName;
ofstream creatorTempStream("temp.txt");
while(initialName != ""){
    system("cls");
    logoHeader();
    cout << endl;
    cout << "--- NEW CONTACT ---------------" << endl;
    cout << "Enter a name for your contact." << endl;
    cout << "-------------------------------" << endl;
    cout << "Press ENTER without inputting" << endl;
    cout << "anything to go back." << endl;
    cout << "-------------------------------" << endl;
    cout << "Name: ";
    getline(cin, initialName);
}

如果我遗漏了任何相关和重要的信息,请告诉我,我会更新帖子。谢谢

如果menuInput()返回正确的值,问题很可能出现在这里(除非while循环之前有其他代码):

string initialName;
ofstream creatorTempStream("temp.txt");
while(initialName != ""){
}

initialName在while循环开始时为空。

您是否尝试使用调试器?在函数contactCreator()中,您正在检查initialName!="而不初始化它。很可能函数正在运行而您没有注意到它。