c++ - 如何打印出包含关键字的 CSV 文件的整行?
问题描述
我试图找出如何从包含特定关键字的 CSV 中打印出整行。例如,我试图只从 CSV 文件中抓取包含“Back Bay”的行。这是代码
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream myfile("cabs.csv");
while (myfile.good())
{
string line;
string find = "Back Bay";
getline(myfile, line, ',');
if (strstr(line.c_str(),find.c_str()))
{
cout << line << endl;
}
}
}
这是 CSV 文件的片段:
2.61,Lyft,1543428487883,South Station,Back Bay,27.5,1.0,2cccac4a-57dc-4dbe-b531-bb529335e898,lyft_lux,Lux Black
2.61,Lyft,1543428487883,South Station,Back Bay,7,1.0,38504f2f-300c-4e1b-bff4-4b44c3b4b842,lyft_line,Shared
2.61,Lyft,1543428487883,South Station,Back Bay,10.5,1.0,3ec303ac-a8b2-4fb8-add2-c83b61c627b5,lyft,Lyft
2.07,Lyft,1543428487883,North End,Beacon Hill,16.5,1.0,7b0c4e8d-21fc-4350-9972-f8dace1177ad,lyft_premier,Lux
2.07,Lyft,1543428487883,North End,Beacon Hill,10.5,1.0,9df49a6e-662d-4ac9-b003-34e3f146a209,lyft,Lyft
2.07,Lyft,1543428487883,North End,Beacon Hill,22.5,1.0,b7d55026-7809-4b7a-b275-27648f79cb8a,lyft_lux,Lux Black
到目前为止,我的输出只打印出文本“Back Bay”(无论它出现多少次),但我希望它也能返回整行值。=>
由此:
Back Bay
Back Bay
Back Bay
对此:
2.61,Lyft,1543428487883,South Station,Back Bay,32.5,1.0,e1f1d1e3-f66a-4c12-94a6-62f59aff739b,lyft_luxsuv,Lux Black XL
2.61,Lyft,1543428487883,South Station,Back Bay,22.5,1.0,ed7e441e-8318-4c89-9499-8d4737bad7b5,lyft_premier,Lux
3.45,Uber,1543474677639,South Station,Back Bay,,1.0,09ede7b3-2e9b-43b4-8837-a58efb2e4d7a,8cf7e821-f0d3-49c6-8eba-e679c0ebcf6a,Taxi
解决方案
getline(myfile, line, ',');
不会读取整行,而只会读取“,”之间的值,因此您只打印“Back Bay”。如果“后湾”的位置无关紧要,可以使用:
std::ifstream input("cabs.csv" );
for( std::string line; getline( input, line ); )
{
if (line.find("Back Bay") != std::string::npos) {
std::cout << line << endl;
}
}
推荐阅读
- scala - 使用 Spark xgboost4j 提前停止时如何获取 iter?
- java - FileProvider 无法解析 XML
- java - Apache lucene:对数字和德语变音符号进行排序
- sql - Laravel 将单独的记录合并为一个记录
- spring - 内存中的spring boot activemq
- c# - 是否可以使用 async/await 向 RabbitMQ 发布消息?
- ios - 框架类是否应该导入伞头
- android - 第二页的导航按钮出现在主页上
- python - 在给定黎曼度量的情况下计算测地线的包
- python - pandas 添加数据为 int 的 html 表值