在C++中查找字符串中的子字符串

Finding substring in String in C++

本文关键字:字符串 查找 C++      更新时间:2023-10-16

我正在从文本文件中读取行,以查找它们的状态,该状态有3个选项,可以是OUT、Discontined或Cancelled

我是这样做的:

ifstream inFile("DVD_list.txt");
string line;
char status;
while ( getline (inFile,line) ) {
    std::size_t pos = line.find("Out" || "Discontinued"|| "Cancelled");     
}
return 0;

如何将find函数与或表达式一起使用?

if((pos = line.find("Out")) != string::npos)
{
    // handle Out
}
else if((pos = line.find("Discontinued")) != string::npos)
{
    // handle Discontinued
}
else if((pos = line.find("Cancelled")) != string::npos)
{
    // handle Cancelled
}
else
{
    // not found
}

可能,您需要确保没有检测到假阳性,例如在"某个样本文本中没有输出"!

std::istringstream is( "I hope it won't rain today" );
auto x = std::find( std::istream_iterator<std::string>( is ),
                std::istream_iterator<std::string>(),
            "rain" );
if ( x != std::istream_iterator<std::string>() ) std::cout << *x << std::endl;

这是一个示例代码。

find()只能匹配一个字符串常量,您必须调用它三次。但是,您可以使用正则表达式来匹配这三个单词,并一次处理整行。