[英]How to use getline to print the correct line from txt file
我正在嘗試創建一個程序,該程序將在給定的目錄 txt 文件中搜索某個字符串。 找到該字符串后,程序將僅將 txt 文件中該行的信息打印到屏幕上。 我的代碼能夠檢查並查看字符串是否在文件中,但它不是只打印它包含的行,而是打印除我想要的行之外的所有內容。
while(!inF.eof()){
getline(inF, hold);
if(hold.find(crnS)){
isFound = 1;
cout << hold << endl;
}
}
您的代碼有兩個問題:
請參閱為什么 iostream::eof 在循環條件(即`while (!stream.eof())`)中被認為是錯誤的?
std::string::find()
返回一個索引,而不是一個bool
。 任何非零值都被評估為真,因此索引 0以外的任何返回值都將滿足您的if
語句,包括std::string::npos
(-1) 如果find()
未找到匹配項。 這意味着你的代碼輸出,其中每行crnS
發現比在最開始的路線,以及在其他任何地方crnS
都找不到。
改用這個:
while (getline(inF, hold)) {
if (hold.find(crnS) != string::npos) {
isFound = 1;
cout << hold << endl;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.