我想查找一个文本文件中的字符串所在的行并输出行数,在C++语言中,我应该怎么编程实现?在线急等!

Tonyfengliang 2006-04-18 10:27:44
我想查找一个文本文件中的字符串所在的行并输出行数,在C++语言中,我应该怎么编程实现?
...全文
895 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mhisky 2006-05-10
  • 打赏
  • 举报
回复
Mark
weasea 2006-05-10
  • 打赏
  • 举报
回复
mark 2
aronzhou 2006-05-10
  • 打赏
  • 举报
回复
mark
jacky_cai 2006-04-18
  • 打赏
  • 举报
回复
#include <iostream>
#include <fstream>
#include <string>
using namespace std;


int main()
{
ifstream in("text.txt");
string line;
string key = "string";
int linenum = 0;

while(getline(in, line))
{
if (line.find(key) != string::npos)
cout << linenum << " ";
linenum++;
}

return 0;
}
lonelyforest 2006-04-18
  • 打赏
  • 举报
回复
楼上好方法,和我以前作的一样,不过这样的话需要吧所有文件读入内存, 耗费比较大。
Tonyfengliang 2006-04-18
  • 打赏
  • 举报
回复
你说的很对的
不过它返回的是字符串
我现在要做的是输出字符串所在的行数。
那样要用什么函数啊
popy007 2006-04-18
  • 打赏
  • 举报
回复
//foo.cpp

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;

void search(vector<string>& lines, string key) {
for(int i=0; i<lines.size(); ++i) {
if(lines[i].find(key) != string::npos) {
cout << "found the key in line " << i << endl;
}
}
}

int main() {
ifstream in("foo.cpp");
vector<string> lines;
string line;
while(getline(in, line)) {
lines.push_back(line);
}
search(lines, "string");
return 0;
}
heskyII 2006-04-18
  • 打赏
  • 举报
回复
如果不存在跨行匹配问题,逐行扫描,确定换行符个数,可使用STRSTR();
如果存在跨行匹配问题就稍微复杂点:可以自己考虑下
pandaxcl 2006-04-18
  • 打赏
  • 举报
回复
#if 0

在CSDN上有一个网友问道下面的这个问题:

我想查找一个文本文件中的字符串所在的行并输出行数!

在此我给出一个比较简洁的方案如代码CODE1所示:

#endif
#ifdef CODE1
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream in("data.txt");
const char*target="博客";//需要搜索的字符串
string tmp;
string::size_type index=0;
while(in>>tmp)
{
if(tmp.find(target)!=string::npos) break;
++index;
}
//文件的首行编号为0
cout << "[" << target << "]在文件中的的行号为:" << index << endl;
return 0;
}
#endif//CODE1
////////////////////////////////////////////////////////////
//该程序的运行结果为:
/***********************************************************
[博客]在文件中的的行号为:3
***********************************************************/
////////////////////////////////////////////////////////////
//所使用的数据文件为:
#if 0//这一行不是文件内容
我是熊猫
我还是国宝
我也是开心
我的博客:http://blog.csdn.net/pandaxcl/
#endif
////////////////////////////////////////////////////////////

另外请关注一下我得博客谢谢,在我的博客里面有你的这个问题的排版格式的回答。我写了很多实用的文章的:)敬请关注:)
http://blog.csdn.net/pandaxcl/
逸学堂 2006-04-18
  • 打赏
  • 举报
回复
lz看看C++ primer吧,
第六章,有一个完成的例子,实现lz要求的功能。

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧