C++ C++;从输入的字符串中搜索CSV文件
我试图创建一个程序,将加载CSV文件,并根据输入的单词搜索文件,并返回任何包含该单词的行。CSV文件是推文的大量下载,包含以下列:C++ C++;从输入的字符串中搜索CSV文件,c++,visual-studio,csv,C++,Visual Studio,Csv,我试图创建一个程序,将加载CSV文件,并根据输入的单词搜索文件,并返回任何包含该单词的行。CSV文件是推文的大量下载,包含以下列: 创建日期和时间 推特 tweets也被b'TWEET TEXT HERE'包围,因此在打印时需要删除b''。我无法更改任何与CSV文件有关的内容,因此无法手动删除它。我面临的问题是: 列出程序刚刚冻结的文件中的推文总量 正在从推文中删除b“” else语句导致“notfound”不断打印 我目前拥有的代码返回的推文包含输入的单词,但也有误报 运行以下代码时的电
- 创建日期和时间
- 推特
#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;
}
#包括“stdafx.h”
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串标记;
流鳍;
财务公开(“sampleTweets.csv”);
如果(fin.is_open())
{
cout您可以使用擦除删除中的“b”
:
if (line.find(token) != string::npos){
int n= line.find(",");
line.erase(n+1, 3);
cout << line << endl;
}
编辑:您可以删除额外的引号和逗号,如下所示:
line[n] = ' '; // change comma int space
line.erase(n+1, 4); // remove "b""
line.resize(line.size()-5); // remove trailing """,,
为什么要无条件地运行cout-Ah,这可以解释它总是打印出来的事实…cin>>令牌;“\n”;我不确定您想在这里实现什么,但这是错误的。@Willl这是将用户输入作为他们希望搜索的内容。您希望输出行的具体外观是什么样的?谢谢您,它删除了b,但是仍然有很多逗号和"理想情况下,我也想删除它。目前输出看起来是这样的@KaiJones:这就是我询问输出线的原因。对不起,我以为我之前回答了我的错误。你知道为什么else循环一直在运行,即使它应该运行吗?@KaiJones:是的,但你必须自己解决这个问题。你误解了吗当你写代码的时候,不要去理解循环和条件的逻辑,告诉你答案对你没有好处。我建议你尝试使用更简单的程序,使用while
、if
和else
。
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 """,,