如何使用C++打印CSV文件中包含指定关键词的完整行
问题根因
代码运行异常的核心原因是调用getline时指定了分隔符为逗号,, 导致每次仅读取CSV的单个字段而非完整行,匹配到关键词后自然只会输出对应字段,无法输出整行内容。
修正后可运行代码
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream myfile("cabs.csv"); const string target_keyword = "Back Bay"; string current_line; while (getline(myfile, current_line)) { if (current_line.find(target_keyword) != string::npos) { cout << current_line << endl; } } myfile.close(); return 0; }
主要修改说明
- 移除
getline的第三个分隔符参数,默认按换行符读取完整的一行内容 - 将
getline调用放在循环条件中,自动判断文件读取状态,避免读到无效内容 - 用C++ string类原生的
find方法判断关键词是否存在,无需转换为C风格字符串,写法更简洁 - 将关键词变量移到循环外定义,避免循环内重复创建对象,提升运行效率
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

