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