我正在尝试创建一个程序,该程序将加载CSV文件并根据输入的单词搜索文件并返回包含该单词的任何行。 CSV文件是推文的大量下载,其中包含以下列:
这些推文也被b'TWEET TEXT在这里所包围'所以需要从打印出来时删除b''。我遗憾地无法更改与CSV文件有关的任何内容,因此无法手动将其删除。我遇到的问题是:
Code I目前正在返回包含输入单词但也包含误报的推文。
运行以下代码时的当前输出
#include "stdafx.h"
#include <cstring>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string token;
ifstream fin;
fin.open("sampleTweets.csv");
if (fin.is_open())
{
cout << "File opened successfully" << "\n";
}
else {
cout << "Error opening file" << "\n";
}
cout << "Enter search word: ";
cin >> token;
"\n";
string line;
while (getline(fin, line)) {
if (line.find(token) != string::npos) {
cout << line << endl;
} else {
cout << token << " not found" << endl;
}
}
fin.close();
char anykey;
cout << "press any key";
cin >> anykey;
return 0;
}
我用来计算总推文的代码
int count = 0;
char str[140];
while (!fin.eof())
{
fin.getline(str, 140);
count++;
}
cout << "Number of lines in file are " << count;
任何有关这方面的帮助都会令人惊讶,因为我对C ++很陌生,不知道从哪里开始!
答案 0 :(得分:0)
您可以使用"b"
删除erase
:
if (line.find(token) != string::npos){
int n= line.find(",");
line.erase(n+1, 3);
cout << line << endl;
}
你可以计算while
循环中的行:
int count = 0;
while (getline(fin, line)) {
++count;
...
}
编辑:您可以删除多余的引号和逗号,如下所示:
line[n] = ' '; // change comma int space
line.erase(n+1, 4); // remove "b""
line.resize(line.size()-5); // remove trailing """,,