首页 > 解决方案 > C++ 初学者:为什么我的编译器会根据我的循环返回“未找到名称”?

问题描述

这是我在学习了 3 门 Java 课程后第一次使用 C++ 编程(所以,这里绝对是初学者)。作业提示我附加到文本文件,然后在文本文件中搜索名称(在本例中为我的姓名)。它工作得很好,然后我试图让它显示我的全名而不仅仅是我的姓氏,所以我对它进行了修改。现在我无法弄清楚为什么结果总是“找不到名称”,尽管我输入了我的名字以获得“找到的名称是:”结果。(此外,作业希望将“未找到名称”添加到不同的 .txt 文件中,因此它们的名称不同。这很好用。)非常感谢!

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main (){

    ifstream inFile("/Users/katelynwalker/Documents/CSC450_CT5_mod5.txt");
    ofstream outFile;
    outFile.open("/Users/katelynwalker/Documents/CSC450_CT5_mod5.txt", ios::app);//appends instead of overwrites
        outFile<<"Katelyn Walker";
        cout<<"Name has been added to the file. ";
    outFile.close();

    string search;
    cout<<"Please enter a name: ";
    cin>>ws;
    cin>>search;
    bool isFound = 0;
    string name = " ";
    while(getline(inFile, name)){
        for(int i=0; i<search.size(); i++){
            if(name[i]==search[i]){
                isFound = 1;
            }
            else{
                isFound = 0;
            }
        }
        if(isFound){
            cout<<"Name found is: ";
            for(int i=search.size()+1;i<name.size();i++)
                cout << name[i];
        break;
        }
    }
    if(inFile.eof()&&(!isFound)){
        outFile.open("/Users/katelynwalker/Documents/CSC450-not-found_CT5_mod5.txt", ios::app);
        outFile<<"Name not found.";
        cout<<"Name not found.";
    }
    inFile.close();
return 0;
}

标签: c++loopssearchappendtext-files

解决方案


如果你想让你的名字写在一行上,你应该写一个完整的行,包括一个换行符:

outFile<<"Katelyn Walker" << std::endl;

并且在要求搜索名称时, std::cin >> search不会让您输入空格。如果您不想要空格,那没关系,否则您可能应该使用std::getline(std::cin, search);

与您的问题无关,不要使用using namespace std;它是一个坏习惯。


推荐阅读