替换文件中间的文本

2023-12-08

I have .txt文件,有几行:

username1:123456789:etc:etc:etc:etc
username2:1234:etc:etc:etc:etc
username3:123456:etc:etc:etc:etc
username4:1234567:etc:etc:etc:etc

用户名1 - 用户名; 123456789-密码; 等等 - 更多文字。

我有代码来读取文件并查找行在哪里username我需要的。还可以通过代码更改密码,但如果新密码比旧密码长,则会出现问题:

username3:11111111111tc:etc:etc:etc

如果新密码较短,则如下所示:

username1:111111789:etc:etc:etc:etc

我有新密码的长度,但如何获取旧密码的长度并正确替换它?

My code

include<iostream>
#include<fstream>
#include <cstring>

using namespace std;

int main() {
    int i=0;
    bool found = false;
    string line, username;
    char newpass[255] = "555555555555555";
    long length, plen;


    cout<<"Insert username: ";
    cin>>username;
    username+=":";
    fstream changeLINE("/.../testaDoc.txt");

    if (!changeLINE) {
        cout << "Can't find the file or directory!" << endl;
    }
    else

        while (getline(changeLINE, line) && !found) {
            i++;

            if (line.find(username) != string::npos) {
                length = changeLINE.tellg();
                changeLINE.seekg((length - line.length()) + username.length() - 1);
                changeLINE.write("", strlen(newpass));
                cout << line << " line " << i << endl;
                found = true;
            }
        }

    if (!found)
        cout << "User with username = " << username << " NOT FOUND!";

    changeLINE.close();

}

我正在 Linux 上工作,用 C++ 编写。

Edit

也许有办法在文本中添加字符串,但不替换它,也有方法通过不替换它来删除字符串?然后我可以读取旧密码的长度,将其与新密码进行比较,并删除/添加字符串中的字母以正确替换它。


除非您要替换的线与新线的长度相同,否则您需要不同的策略 -

您可以使用以下策略:

  • 创建临时文件
  • 将您不想更改的行直接写入临时文件。您要更改的行,用新行替换
  • 关闭这两个文件。
  • 删除原文件
  • 将临时文件重命名为原始文件名

或者您可以如评论中所述将所有行读入内存,例如行向量,替换要更改的行,然后将所有行写回到文件中,替换以前的内容。如果新行比前一行短,您可以使用以下命令截断文件:如何在使用 fstream 打开文件时截断文件

这可以工作吗:

std::vector<std::string> lines;
while (std::getline(changeLINE, line)) 
{
    i++;

    if (line.find(username) != std::string::npos) {            
        std::cout << line << " line " << i << std::endl;
        found = true;
        std::string newline = username + ":" + newpass +     line.substr(line.find(":", username.length() + 2)) ;
        lines.push_back(newline);
    }
    else
    {
        lines.push_back(line);
    }
}

changeLINE.close();
std::ofstream ofs;
ofs.open("/.../testaDoc.txt", std::ofstream::out | std::ofstream::trunc);

for(auto& s: lines)
    ofs << s << std::endl;

ofs.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换文件中间的文本 的相关文章

  • 遍历后加快数组查找速度?

    我有一个123MB大的int数组 它基本上是这样使用的 private static int data new int 32487834 static int eval int c int p data c 0 p data p c 1 p
  • 您使用什么工具和技术来查找死代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您使用哪些工具和技术来查找 NET 中的死代码 过去 我用 Obsolete 属性修饰方法 传递 tr
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • 以编程方式更改 Excel 中的字体(Trebuchet MS、Calibari)C#

    我目前正在使用一个 C 应用程序 该应用程序有一个将生成 Excel 文件的类 一切都很顺利 Excel 工作表上填充的数据具有 Times New Roman 字体 我想将其更改为其他字体 Calibari 我怎样才能以编程方式做到这一点
  • 如何从 std::vector 中删除元素而不调整其大小

    迭代器擦除 迭代器位置 迭代器擦除 首先是迭代器 迭代器最后 擦除元素 从向量中删除 容器可以是单个元素 位置 或一系列元素 第一个 最后一个 这有效地减少了向量 大小除以元素数量 删除 调用每个元素的 之前的析构函数 and remove
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • 如何在 C++ 中初始化嵌套类的构造函数

    我在初始化嵌套类构造函数时遇到问题 这是我的代码 include
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 除法时的小数舍入误差 (C#)

    我基本上有四个数字 比如 100 200 300 400 我需要计算概率为 100 100 200 300 400 200 100 200 300 400 等等在 当我使用小数数据类型来存储这些概率时 由于舍入问题 它们不会达到 1 在不使
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 将 R 值传递给采用 L 值的函数时出现过载歧义

    我有 2 个重载函数 一个采用 L 值 另一个采用 R 值 目的是让该函数可以像这样调用 Obj obj foo obj OR foo Obj 所以 我写了2个重载函数 template
  • 矩阵行列式算法 C++

    我是编程新手 我一直在寻找一种找到矩阵行列式的方法 我在网上找到了这段代码 但我很难理解这里的算法 我对递归的基础没有问题 但继续和主循环我很难理解 非常感谢任何可以向我解释该算法的人 int determ int a MAX MAX in
  • Task.Delay 到底是如何工作的?

    他们说 Task Delay 是一个异步 Thread Sleep 为了测试这一点 我写了下面的代码 我希望立即打印 One 然后 3 秒后将打印结果变量 15 2 秒后 将打印 Two 但似乎并非如此 一 不会立即打印 3 秒后打印 On
  • 更快的 WinSock sendto()

    我使用的是 Windows Server 2008 我的程序是用 C 编写的 我在 while true 循环中使用 WinSock2 和 sendto 来发送数据包 代码如下 while true if c snd gt max c sn
  • 预览MouseMove 与 MouseMove

    我有相当多的 XAML 经验 但最近我注意到我的大多数同事都使用预览鼠标移动代替鼠标移动事件 我一直用鼠标移动它对我很有帮助 但我忍不住问我什么时候应该使用预览鼠标移动什么时候鼠标移动 有什么区别 各自有什么优点和缺点等等 PreviewM
  • 从不同的线程访问对象

    我有一个服务器类 它基本上等待来自客户端的连接 在该类中 我创建了一个 NetworkStream 对象 以便能够从客户端接收字节 由于 NetworkStream Read 方法不是异步的 这意味着它将等到从客户端读取字节才能继续执行类似
  • 如何从与 C# lambda 集成(而非代理集成)的 Amazon API 网关获取正确的 http 状态代码?

    我正在使用 C lambda 与 API 网关集成 我希望 API 网关返回正确的错误代码 例如 400 404 500 等 API网关模块tf文件 provider aws version lt 2 70 0 region var aws

随机推荐

  • 在未初始化的局部变量的情况下,Windows 线程堆栈保护页机制如何工作?

    在 x86 32 x86 64 架构的 Windows 操作系统上 线程堆栈虚拟内存由 保留部分 提交部分 保护页 和 保留页 组成 问题 想象一下 我有 1 页提交内存和 1MB 线程堆栈保留内存 我在堆栈上分配了一些等于 K 页的内存
  • Owl-carousel 2 失去焦点时停止自动播放工作

    我使用 Owl carousel 2 我使用 Owl carousel 2 的初始化和标记的标准代码 在页面的第一次加载时 轮播的工作是完美的 当我在浏览器中传递到另一个页面并返回或最小化浏览器并再次使用 Owl carousel 2 打开
  • 更改产品代码时可以将1.0.0.0升级到1.0.0.1吗?

    我被要求将版本 1 0 0 0 升级到 1 0 0 1 默认情况下 当我使用虚拟安装程序进行测试时 如果我们更改产品代码 1 0 0 0 和 1 0 0 1 都会并排安装 但如果我们执行版本 1 0 1 0 同时更改产品代码 它将进行升级
  • 客户端浏览器的提交机制和 ASP.NET 回发机制有什么区别?

    Button UseSubmitBehavior 属性用于获取或设置一个值 该值指示 Button 控件是使用客户端浏览器的提交机制还是 ASP NET 回发机制 那么 客户端浏览器的提交机制和 ASP NET 的回发机制有什么区别呢 如果
  • C# 工具提示中的富文本

    我可以扩展 ToolTip 并创建自己的 RichToolTip 但我不明白如何处理每行或每字的格式 我可以添加用户可以单击的控件吗 或图像等 我碰到富文本框但这是用 C MFC 编写的 我想要 C 的东西或可以与 C 一起使用的东西 有什
  • 如何使用js读取所有url参数?

    有什么办法 如何读取 url 参数吗 www example com detail id 12 www example com detail 12 返回 12 我不知道参数是什么 我想全部归还 您可以使用window location hr
  • 在 java web start 应用程序中禁用字节码验证

    我有一个 java web start 应用程序 我需要从 jnlp 文件中禁用字节码验证 这可以通过设置 JAVAWS VM ARGS 轻松完成 noverify 或通过设置 X验证 无但是文档这里说web start不支持添加这些参数在
  • 如何在特定条件下做出承诺解决?

    我是 JavaScript 新手 我真的对 Promise 的文档感到困惑 我在这里有以下情况 我有很多用户 对于每个用户 我执行一个异步函数 在该函数中我对该用户进行一些计算 并将结果与 用户一起添加到数组中 根据我从文档中了解到的 我需
  • 让 IIS6 提供 JSON 文件(包括 POST、GET)?

    默认情况下 IIS6不提供 json 无通配符MIME type 因此会抛出 404 not find 错误 然后我添加一个新的 MIME 类型 json text plain or application x javascript or
  • 查找列中的重复项并使用替代颜色突出显示行背景色

    我想突出显示行的单元格颜色 文本位于 A 列中 当 A 列中的值相同并且想要时 G 具有相同的颜色 对所有行迭代相同的操作并应用替代颜色 还想将 2 个单元格中的字体颜色更改为红色 F 列和 当 F 列中有文本 文件位于 EMEA 服务器上
  • XSL 转换 - 未声明的命名空间前缀

    我有一个 XSL 文件 我想用它转换 XML 文件 该 XML 文件是通过重命名具有 safe 扩展名的原始文件而获得的 在这里你可以看到它的第一行
  • 测量 MPI 通信成本的工具 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在使用 MPI 我想测
  • 在 javascript 中,哪个更好 `var Obj = Obj || {}` 或 `if (Obj === '未定义' || typeof Obj !== 'object')`

    我想知道以下哪种方法更好 var Obj Obj or if Obj undefined typeof Obj object Obj 有人告诉我第二种方法更好 但我不知道为什么 请您向我解释一下各自的优点和缺点 非常感谢 第二种方法更具体
  • mailto 不适用于大型正文内容

    我正在尝试使用 mailto 函数在我的 Web 应用程序中获取 Outlook 窗口 使用下面的代码 a href Send mail a 如果bodyText小于周围1800人物 但它会截断超过 1800 个字符的数据 如果正文内容超过
  • PHP JPEG 函数不工作

    任何处理 JPEG 的 PHP 函数似乎都无法在我的服务器上运行 这段代码 创建一个空文件 使用 GIF 或 PNG 函数将创建一个包含预期文本 简单文本字符串 的图像 This im imagecreatefromjpeg t
  • 何时或为何在 Oracle 数据库中使用“SET DEFINE OFF”

    我正在观看 Oracle 中的脚本 我看到了一些我不认识的东西 REM INSERTING into database1 Users SET DEFINE OFF Insert into database1 Users id right v
  • PHP:可视化您的应用程序工作流程和功能与功能的关系

    我正在寻找一款可以帮助我可视化应用程序工作流程以及功能与功能关系的软件 我正在使用 codeigniter 而且我的应用程序每天都在变得越来越大 而且是我独自工作 我开始得精神分裂症了 今天我正在构建数据库模型 明天可能是查看js html
  • 如何从 Perl 发出 HTTP GET 请求?

    我正在尝试编写我的第一个 Perl 程序 如果您认为 Perl 对于手头的任务来说是一种糟糕的语言 请告诉我哪种语言可以更好地解决它 该程序测试给定机器和远程 Apache 服务器之间的连接 首先 程序从 Apache 服务器请求目录列表
  • $lookup的Foreign字段可以是嵌套文档的字段吗?

    lookup用于对同一数据库中的未分片集合执行左外连接 以从 连接 集合中过滤文档 以便在 Mongo 中进行处理 lookup from
  • 替换文件中间的文本

    I have txt文件 有几行 username1 123456789 etc etc etc etc username2 1234 etc etc etc etc username3 123456 etc etc etc etc use