2012-11-27 72 views
0

我该怎么做? 整个一天,我一直在到处找一个解决办法:( 它在C++中,所有的问题是在标题,谢谢对一个字符串进行迭代并与另一个字符串进行比较以检查第一个字符是否在第二个字符中

if(fp.is_open()) 
{ 
    while(getline(fp, buff)) 
    { 
     if(buff.length() == lung) 
     { 
      // check if the characters are in the string 

      while(found != string::npos) 
      { 
       cout << i << "\r"; 

       for(int x = 0; x < buff.length(); ++x) 
       { 
        found = lettere_possibili.find(buff[x]); 

        if(found == string::npos) 
        { 
         continue; 
        } 
       } 

       ++i;   
      } 

      j = 0; 
     } 

     ++k; 
    } 

    fp.close(); 
} 
+1

你只是想比较两个字符串以显示它们是否完全相同? – PaulG

+1

如果一个字符串是第二个字符串的* substring *,你在看吗?哪一个是其中的一个子串是重要的? (即输入'(“aa”,“aaa”)'将产生与“(”aaa“,”aa“)相同的答案) – amit

+3

所以你检查一个是否是另一个的字谜?我只是将它们排序并检查是否平等。 – chris

回答

5

的问题是不完全清楚,但在我看来,因为如果你正在寻找find_first_not_of()

bool containsOnlyCharsFromPossibili = (buff.find_first_not_of(lettere_possibili) == string::npos); 
+0

谢谢sooooo,今天早上我一直在努力解决问题,我爱你<3 – DomeWTF

+0

@DomenicoMastrangelo如果答案为你解决了问题,接受它如何? – Angew

0
#include <iostream> 

void find_chars(const std::string &first, const std::string &second) 
{ 
    std::string::const_iterator s; 

    for (s = second.begin(); s != second.end(); ++s) 
    { 
     if (first.find(*s) != std::string::npos) 
     { 
      std::cout << *s << " is in " << second << "\n"; 
     } 
    } 
} 

int main() 
{ 
    find_chars("abc", "abcdef"); 
} 

下面是输出:

a is in abcdef 
b is in abcdef 
c is in abcdef 
+0

我已经这样做了,但我无法让程序遍历一个单词,如果它包含所有你正在搜索的字符,并且它的长度如何你想要它,显示它在命令行,只有比去下一个字 – DomeWTF

+0

,如果它没有在它的所有字符,如果第一个字符串中的字符不是第二 为前: pappagalloverk pappagallini i和n不是“pappagalloverk”和所以它应该只是去下一个 – DomeWTF

相关问题