检查两个字符串是否与文件中的一个输入相等

时间:2016-05-22 08:36:03

标签: c++ file-io fstream ifstream

The dictionary file

这是我的代码。这里dict.txt是链接文件。字符串搜索从包含字符串的向量(可能)初始化。我使用getline从文件中读取并将每行存储在字符串temp中。现在的问题是,当我执行search == temp时输出为false,这应该是真的。我必须打印字典文件中的字符串。所以我从文件中提取每一行并进行比较,但是这种相等性在某种程度上被窃听,或者我在某处出现问题。

    ifstream infile("namenumdict.txt");
    string search="", temp="";
    int k=0;
    for(int i=0; i<possible.size(); i++)
    {
        search=possible[i];
        while(getline(infile, temp))
        {
            if(search==temp)
            {
                fout<<temp<<endl;
                k++;
            }

        }
    }

我已经通过调试检查了所有东西都运行良好。正在初始化search以及temp

请让我知道这个问题。 感谢

1 个答案:

答案 0 :(得分:2)

有几种可能的陷阱。 Windows以\r\n结束行,但Linux仅\n。如果您在Linux上运行此操作但使用来自Windows的文件,则该字符串将包含\r之前显示的\n。检查字符串末尾的\r并将其删除。

另一种可能性是你将“WORD”与“word”进行比较。在比较之前处理两个字符串的小写(或两者都是大写)。

过去的爆炸:\r\n来自古老的电传打字机时代。他们必须做回车(\r)以回到行首,然后换行(\n)以回到新行。