C++ 初学者:为什么我的编译器会根据我的循环返回 "name not found"?
C++ beginner: why is my compiler returning "name not found" based on my loop?
这是我在 Java 中学习了 3 类 之后第一次使用 C++ 编程(所以,这里绝对是初学者)。家庭作业提示我附加到文本文件,然后在文本文件中搜索名称(在本例中为我的名字)。它工作得很好,然后我试图让它显示我的全名而不仅仅是我的姓氏,所以我修改了它。现在我无法弄清楚为什么结果总是 "Name not found" 尽管我输入了我的名字以获得 "Name found is: " 结果。 (此外,家庭作业希望将 "Name not found" 添加到不同的 .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;
}
如果你想让你的名字写在一行上,你应该写一个完整的行,包括一个换行符:
outFile<<"Katelyn Walker" << std::endl;
并且在询问要搜索的名称时,std::cin >> search
不会让您输入空格。如果你不想要空格,那没关系,否则你应该使用 std::getline(std::cin, search);
与你的问题无关,不要使用using namespace std;
这是一个坏习惯。
这是我在 Java 中学习了 3 类 之后第一次使用 C++ 编程(所以,这里绝对是初学者)。家庭作业提示我附加到文本文件,然后在文本文件中搜索名称(在本例中为我的名字)。它工作得很好,然后我试图让它显示我的全名而不仅仅是我的姓氏,所以我修改了它。现在我无法弄清楚为什么结果总是 "Name not found" 尽管我输入了我的名字以获得 "Name found is: " 结果。 (此外,家庭作业希望将 "Name not found" 添加到不同的 .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;
}
如果你想让你的名字写在一行上,你应该写一个完整的行,包括一个换行符:
outFile<<"Katelyn Walker" << std::endl;
并且在询问要搜索的名称时,std::cin >> search
不会让您输入空格。如果你不想要空格,那没关系,否则你应该使用 std::getline(std::cin, search);
与你的问题无关,不要使用using namespace std;
这是一个坏习惯。