繁体   English   中英

用单个字符比较两个字符串C ++

[英]compare two strings by individual characters C++

正在研究一个将参数与文件中的文本进行比较的程序(我的文件是一个包含很多英语单词的字典)。

现在,该应用程序仅能完全匹配字符串。

想知道是否有一种方法可以将输入的部分字符串与文件中的完整字符串进行比较,并使其匹配。 例如,如果arg是ap,它将与苹果应用程序联盟ext匹配。

# include <iostream>
# include <fstream>
# include <cstdlib>
# include <string>
using namespace std;


int main ( int argc, char *argv[] ) {

    ifstream inFile;
    inFile.open("/Users/mikelucci/Desktop/american-english-insane");

    //Check for error

    if (inFile.fail()) {
        cerr << "Fail to Open File" << endl;
        exit(1);
    }

    string word;
    int count = 0;


    //Use loop to read through file until the end

    while (!inFile.eof()) {
        inFile >> word;
        if (word == argv[1]) {
            count++;
        }
    }

    cout << count << " words matched." << endl;

    inFile.close(); 
    return 0;
}

如果“匹配”是指“文件中的字符串包含输入中的字符串”,则可以使用string :: find方法。 在这种情况下,您的情况将如下所示:

word.find(argv[1]) != string::npos

如果“匹配”是指“文件中的字符串以输入中的字符串开头”,则可以再次使用string :: find,但要满足以下条件:

word.find(argv[1]) == 0

相关文档在这里

首先将argv[1]复制到字符串中(并非绝对必要,但这会使随后的比较更加简单):

std::string target(arg[1]);

然后使用std::equal

if (std::equal(word.begin(), word.end(), target.begin(). target.end()))

如果两个序列中的较短者与较长者开始处的对应字符匹配,则此形式的equal (在C ++ 14中添加)返回true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM