Новичок в C ++: почему мой компилятор возвращает «имя не найдено» на основе моего l oop? - PullRequest
1 голос
/ 17 июня 2020

Я впервые занимаюсь программированием на C ++ после трех занятий в Java (так что здесь определенно новичок). Домашнее задание предлагает мне добавить текст в текстовый файл, а затем искать в текстовом файле имя (в данном случае мое имя). Он работал отлично, тогда я пытался заставить его отображать мое полное имя, а не только мою фамилию, поэтому я повозился с ним. Теперь я не могу понять, почему результат всегда «Имя не найдено», несмотря на то, что я ввел свое имя, чтобы получить результат «Имя найдено:». (Кроме того, домашнее задание требовало, чтобы «Имя не найдено» было добавлено в другой файл .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;
}

1 Ответ

1 голос
/ 17 июня 2020

Если вы хотите, чтобы ваше имя было написано в одной строке, вы должны написать всю строку, включая новую строку:

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

И при запросе имени для поиска std::cin >> search не будет позволяют вводить пробелы. Если вам не нужны пробелы, то это нормально, в противном случае вам, вероятно, следует использовать std::getline(std::cin, search);

Не связанное с вашим вопросом, не используйте using namespace std;, это плохая привычка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...