C++ 如何比较两个字符串?这是我的代码,它没有给出期望的结果。这是不正确的比较
我的代码是关于查找names.txt中是否存在特定名称的C++ 如何比较两个字符串?这是我的代码,它没有给出期望的结果。这是不正确的比较,c++,c++11,codeblocks,C++,C++11,Codeblocks,我的代码是关于查找names.txt中是否存在特定名称的 #include<iostream> #include<fstream> using namespace std; int main() { ifstream file("names.txt"); string names[6]; string test; cin>>test; for(int i=0;i<6;i++) {
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream file("names.txt");
string names[6];
string test;
cin>>test;
for(int i=0;i<6;i++)
{
getline(file, names[i]);
}
for(int i=0;i<6;i++)
{
if(names[i]==test)
{
cout<<"found";
return 0;
}
}
cout<<"not found";
return 0;
}
但当我在name.txt中输入一个名字时,它也会显示“未找到”(我正在输入全名)。为什么?
哪里出错了?您不应该将cin与字符串一起使用,请尝试使用
getline(cin,test) C++
std::cin
一直读取到下一个空格,因此在代码中只读取名字。您可以使用std::getline(std::cin,test)
解决这个问题。我已经编辑了您的源代码,现在可以使用了
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char*argv[])
{
std::ifstream file("names.txt");
std::string names[6];
std::string test;
std::getline(std::cin, test);
for (int i = 0; i < 6; i++)
{
std::getline(file, names[i]);
}
for (int i = 0; i < 6; i++)
{
if (!names[i].compare(test))
{
std::cout << "found";
return 0;
}
}
std::cout << "not found";
return 0;
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
std::ifstream文件(“names.txt”);
std::字符串名称[6];
字符串测试;
std::getline(std::cin,测试);
对于(int i=0;i<6;i++)
{
std::getline(文件,名称[i]);
}
对于(int i=0;i<6;i++)
{
如果(!name[i].比较(测试))
{
标准::cout
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char*argv[])
{
std::ifstream file("names.txt");
std::string names[6];
std::string test;
std::getline(std::cin, test);
for (int i = 0; i < 6; i++)
{
std::getline(file, names[i]);
}
for (int i = 0; i < 6; i++)
{
if (!names[i].compare(test))
{
std::cout << "found";
return 0;
}
}
std::cout << "not found";
return 0;
}