C++ string.compare表示c++;

C++ string.compare表示c++;,c++,io,compare,C++,Io,Compare,我要求用户输入一个单词,然后让我的程序将其与input.txt文件进行比较 但即使我在data.txt中输入了一个单词,它仍然执行false //------------in my data.txt--------- // Banana Bed Today // Apples Chair Window // Corn Tomorrow Hive string testData; cout<<"enter Data: "; cin>>testData; for

我要求用户输入一个单词,然后让我的程序将其与input.txt文件进行比较 但即使我在data.txt中输入了一个单词,它仍然执行false

//------------in my data.txt---------
// Banana Bed Today
// Apples Chair Window
// Corn Tomorrow Hive

string testData;
  cout<<"enter Data: ";
  cin>>testData;
  for(i=0; i<s.size()-1; i++){
    if (testData.compare(s[i]->name) == 0)
      cout<<"Right\n";
    if (youkno.compare(s[i]->name) != 0)
        cout<<"Wrong\n";
  }
/-----------在my data.txt中---------
//今天的香蕉床
//苹果椅窗
//玉米明天蜂箱
字符串测试数据;
couttestData;
对于(i=0;iname)==0)
如果更换,则不能:

for(i=0; i<s.size()-1; i++){
用于(i=0;i如果替换:

for(i=0; i<s.size()-1; i++){

对于(i=0;i在
s[i]->name
中是什么?如果从文件中读取该数据,则可能已经在
name
变量中包含了行尾

另外,为什么不使用
操作符==

编辑:刚刚注意到您有一个off by one错误。您的for循环应该是

for(i=0; i<s.size(); i++)

对于(i=0;i在
s[i]->name
中是什么?如果从文件中读取该数据,则可能已经在
name
变量中包含了行尾

另外,为什么不使用
操作符==

编辑:刚刚注意到您有一个off by one错误。您的for循环应该是

for(i=0; i<s.size(); i++)

for(i=0;i如何读取测试数据(
s
)?您的代码也包含错误,但这与您的特定示例无关。如何读取测试数据(
s
)?您的代码也包含错误,但这与您的特定示例无关。我认为
op==
的主要区别在于创建了一个临时字符串对象(这并不重要,除非您真正追求性能)@paxdiablo operator==不创建临时互联网,至少在
char*
-
compare
似乎没有这种行为,或者至少没有记录在案的情况下是这样说的:(尽管我不知道该网站的真实性,我非常愿意被证明是错误的)@paxdiablo我们不知道
s[i]->name
是什么类型。如果它是一个std::string,那么就没有临时os created。我认为
op=
的主要区别在于创建了一个临时string对象(除非您真正追求性能,否则它并不重要)@paxdiablo operator==不创建临时互联网,至少在
char*
-
compare
似乎没有这种行为,或者至少没有记录在案的情况下是这样说的:(尽管我不知道该网站的真实性,我非常愿意被证明是错误的)@paxdiablo我们不知道
s[i]->name
是什么类型。如果它是std::string,那么就没有临时操作系统创建hanks。我不知道为什么我没有想到用那种方式测试它。谢谢。我不知道为什么我没有想到用那种方式测试它。