[英]C++ matching a specific string
我這里有一個函數,用於檢查文本文件中是否存在字符串。 我現在遇到的問題是它正在檢查子字符串,因此,如果文件中包含單詞“ IronMan”,則該字符串的任何部分都將通過檢查。
這是該函數的代碼:
void UIFunctions::checkIfExists()
{
while (!fin.eof())
{
getline(fin, line);
if (line.compare(getFriendName()) == string::npos)
{
setExists(false);
cout << getExistsErrorPrompt() << endl << endl;
if (listAfterCheck == 1)
{
listUsers();
}
cout << endl;
cout << endl;
cout << getErrorPrompt();
}
}
}
我搜索了解決方案並閱讀了這一行。 比較 (從線改變。 找到 )就是我需要匹配整個字符串,但而不是接受字符串(如line.find所做的那樣),現在它不接受任何東西,以通過檢查。
編輯:此功能使用的文件也將如下所示:
Ironman Captain Thor
std::basic_string::compare
返回小於0、0或大於0的值。
if (line.compare(getFriendName()) == string::npos)
正在查看返回的值是否為string::npos
類型的string::npos
您很有可能永遠不會觸發if語句。 如果您只想完全匹配一個字符串,則可以使用
if (line == getFriendName())
相反,如果您要查找以getFriendName()
開頭的任何行,則需要
if (line.find(getFriendName()) == 0)
在上面的代碼中,如果字符串以您想要的開頭,則find
僅返回0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.