Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将std::cin中的字符串与外部txt文件中的字符串进行比较_C++_Linux_String_Compare_Cin - Fatal编程技术网

C++ C++;将std::cin中的字符串与外部txt文件中的字符串进行比较

C++ C++;将std::cin中的字符串与外部txt文件中的字符串进行比较,c++,linux,string,compare,cin,C++,Linux,String,Compare,Cin,我注意到有一些类似的问题,但我找不到正确的答案 我想比较两个字符串——第一个由用户给出,第二个写在external.txt文件中。我几乎不会注意到这个问题,因为在Windows下,一切都很好,if中的条件对于某些值是真的,但在Linux中不是(它正在编译,但没有给出正确的结果)。我认为cin可能在Linux下添加了一些额外的字符(如\n等),但这两个字符串上的size()值应该是相同的 我应该换什么 string firststr, secondstr; fstream dFile; dFile

我注意到有一些类似的问题,但我找不到正确的答案

我想比较两个字符串——第一个由用户给出,第二个写在external.txt文件中。我几乎不会注意到这个问题,因为在Windows下,一切都很好,if中的条件对于某些值是真的,但在Linux中不是(它正在编译,但没有给出正确的结果)。我认为cin可能在Linux下添加了一些额外的字符(如\n等),但这两个字符串上的size()值应该是相同的

我应该换什么

string firststr, secondstr;
fstream dFile;
dFile.open("dfile.txt", ios::in);
if(dFile.good())
{
while (!dFile.eof())
{    
dFile >> secondstr; //string from file 
}

cin >> firststr;

if(firststr==secondstr) cout <<"OK!";
stringfirststr,secondstr;
fsdfile;
打开(“dFile.txt”,ios::in);
if(dFile.good())
{
而(!dFile.eof())
{    
dFile>>secondstr;//文件中的字符串
}
cin>>firststr;

如果(firststr==secondstr)无法如果您将文件从Windows计算机复制到Linux计算机,则该文件可能具有CR+LF字符,在Linux上使用该文件时会出现问题

假设文件的内容是:

abcd<CR><LF>
它可以在Linux上正常工作

进一步改进的建议:

while
循环更改为:

while (dFile >> secondstr)
{    
}
有关更多详细信息,请参阅。

请参阅了解循环出错的原因。
while (dFile >> secondstr)
{    
}