从文本文件中查找一个单词,然后使用c++显示该单词所在的行号
to find a word from a text file and then also display the line number in which the word lies using C++
我在编程方面绝对是个初学者。不,这也不是作业。我正在努力自学。正如标题本身所述,我想输入一个。txt文件,并从文件中找出一个特定的单词。但那不是我想要的。我更想知道单词所在的行号,这样我就可以使用这个行号并打印出.txt文件中在这一行之后的所有行。我在youtube上找到了这个代码,它告诉我如何找到这个词。我稍微修改了一下,现在它给了我搜索词状态的行(不是行号)。我附上代码。
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
string find_word(string file, string word)
{
int offset;
string line1;
ifstream Myfile;
Myfile.open(open);
if (Myfile.is_open())
{
while (!Myfile.eof())
{
getline(Myfile, line1);
if ((offset = line1.find(word,o)) != string::npos)
{
return line1;
}
}
Myfile.close();
}
else
cout << "couldn't open...." << endl;
}
int main ()
{
string c = find_word("test.txt", "$COOR");
cout << c;
cin.get();
return 0;
}
现在文本文件只包含8行,"$COOR"位于第4行。程序会给我整行。但是我想知道行号,这样我就可以打印出第4行之后的行。
我稍后想测试它的文件有很多行,即超过50000000左右。
逻辑思考。你不知道给定的一行是否包含你要找的单词,直到你读它。因此,您总是需要知道您已阅读的文本文件中当前行的编号,因此,如果该行包含该单词,则打印行号。
您需要另一个变量int
,初始化为零,并在代码每次读取一行文本时递增。因此,当您的代码读取第一行文本时,它被加为1。然后,当代码读取下一行文本时,新变量被增加为2,依此类推。所以,当你找到这个单词时,你知道在哪里可以找到行号。
你的代码已经有了一个循环来读取每一行文本。您不认为现在需要增加行计数器的地方很明显吗?
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 密码登录程序将永远循环并显示不正确的结果
- std::strftime 在 Windows 中使用 GMTIME 将时区 UTC 显示为 UTC+1