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

时间:2016-05-02 07:20:28

标签: c++ file ifstream

我正在从文本文件中读取行,以查找具有3个选项的状态,可以是OUT或Discontinued或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函数与表达式一起使用?

3 个答案:

答案 0 :(得分:3)

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
}

可能需要确保没有检测到误报,例如“某些示例文本没有输出”!

答案 1 :(得分:0)

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;

这是一个示例代码。

答案 2 :(得分:0)

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