Visual Studio C++ 的一个简单示例

Visual Studio 项目属性设置:

项目属性→C/C++→常规→附加包含目录

C:\Intel\include\iconv\include;

项目属性→链接器→常规→附加库目录

C:\Intel\include\iconv\lib;

项目属性→链接器→输入→附加依赖项

iconv.lib;

提示缺少"iconv.dll",需要将iconv.dll拷贝至main.cpp同阶目录。

#include <iostream>
#include <fstream>
#include <string>
#include "C:\Intel\include\iconv\include\iconv.h"

//#pragma comment (lib, "iconv.lib")

using namespace std;

string gb2312_to_utf8(const string& input);
bool FileConvertGb2312ToUtf8(string pathFile);
void SaveToLog(string path, string content);


int main(int argc, char* argv[])
{
    int n = 0;

    string path = string(argv[0]);
    string pathLog = path.substr(0, path.find_last_of('\\') + 1) + "log.txt";

    string log = string("123成功了Hello,world!");

    SaveToLog(pathLog, log);

    FileConvertGb2312ToUtf8(pathLog);

    cin >> n;

    return n;
}

bool FileConvertGb2312ToUtf8(string pathFile)
{
    int pos = pathFile.find_last_of("\\");
    string nameFile = pathFile.substr(pos + 1, pathFile.length() - pos - 5);

    ifstream infile(pathFile, ios::binary);
    if (!infile) {
        cerr << "Failed to open input file" << endl;
        return 1;
    }

    string content((istreambuf_iterator<char>(infile)), istreambuf_iterator<char>());
    infile.close();

    string utf8_content = gb2312_to_utf8(content);
    if (utf8_content.empty()) {
        cerr << "Failed to convert encoding" << endl;
        return 1;
    }

    //pathLog = pathLog.replace(pathLog.find_last_of("log") + 1, 0, "_utf8");
    string pathFileNew = pathFile.replace(pathFile.find_last_of(nameFile) + 1, 0, "_utf8");
    ofstream outfile(pathFileNew, ios::binary);
    if (!outfile) {
        cerr << "Failed to open output file" << endl;
        return 1;
    }

    outfile.write(utf8_content.data(), utf8_content.size());
    outfile.close();

    puts("文件转换成功!");
    puts(pathFileNew.c_str());

    return true;
}

string gb2312_to_utf8(const string& input)
{
    iconv_t cd = iconv_open("UTF-8", "GB2312");
    if (cd == (iconv_t)-1) {
        cerr << "iconv_open failed" << endl;
        return "";
    }

    size_t inbytesleft = input.size();
    size_t outbytesleft = inbytesleft * 2;
    char* inbuf = const_cast<char*>(input.c_str());
    char* outbuf = new char[outbytesleft];
    char* outptr = outbuf;

    if (iconv(cd, (const char**)&inbuf, &inbytesleft, &outptr, &outbytesleft) == (size_t)-1) {
        cerr << "iconv failed" << endl;
        iconv_close(cd);
        delete[] outbuf;
        return "";
    }

    string output(outbuf, outptr - outbuf);
    delete[] outbuf;
    iconv_close(cd);
    return output;
}

void SaveToLog(string path, string content)
{
    ofstream outfile(path);

    if (outfile.is_open())
    {
        outfile << content;
        outfile.close();
        puts("文件保存成功");
        puts(path.c_str());
    }
    else
    {
        puts("文件保存失败");
        puts(path.c_str());
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/591140.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC(上)

initApplicationEventMulticaster为上下文初始化 simpleApplicationEventMulticaster怎么处理广播事件的 refisterListeners注册监听器 finishBeanFactoryInitialization初始化非延迟bean 惰性初始化 dispatcherServlet的初始化 servletConfigPropertyValues创建propertyValues…

虚拟化技术 安装并配置ESXi服务器系统

安装并配置ESXi服务器系统 一、实验目的与要求 1.掌握创建VMware ESXi虚拟机 2.掌握安装VMware ESXi系统 3.掌握配置VMware ESXi系统的管理IP 4.掌握开启VMware ESXi的shell和ssh功能的方法 二、实验内容 1.安装VMware workstation 15或更高版本 2.创建VMware ESXi虚拟…

软件杯 深度学习的动物识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

分布式事务—> seata

分布式事务之Seata 一、什么是分布式事务&#xff1f; 分布式事务是一种特殊类型的事务&#xff0c;它涉及多个分布式系统中的节点&#xff0c;包括事务的参与者、支持事务的服务器、资源服务器以及事务管理器。 在分布式事务中&#xff0c;一次大型操作通常由多个小操作组成…

排序算法--直接选择排序

前提&#xff1a; 选择排序&#xff1a;选择排序(Selection sort)是一种比较简单的排序算法。它的算法思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完。 话不多说&#xff0c;直接放图…

ResponseHttp

文章目录 HTTP响应详解使用抓包查看响应报文协议内容 Response对象Response继承体系Response设置响应数据功能介绍Response请求重定向概述实现方式重定向特点 请求重定向和请求转发比较路径问题Response响应字符数据步骤实现 Response响应字节数据步骤实现 HTTP响应详解 使用抓…

Web前端一套全部清晰 ⑥ day4 CSS.1 基础选择器、文字控制属性

后来的我不在抱怨 所有的事与愿违都是我能力或者判断力不足 仅此而已 —— 24.5.1 一、CSS定义 1. 将CSS放在html文件的<style>标签中 层叠样式表(Cascading style Sheets&#xff0c;缩写为 CSS)&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现(美…

LeetCode 面试经典150题 28.找出字符串中第一个匹配项的下标

题目&#xff1a;给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 思路&#xff1a;暴力&#xff08;…

Pyside6详细使用教程python之GUI开发

1、首先需要安装Pyside6&#xff0c;终端执行命令&#xff1a; pip3.10 install pyside6 2、你们的一般是 pip install pyside6 2、如下代码创建一个简易程序导入必要的模块 import sys from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton,…

【docker】常用的Docker编排和调度平台

常用的Docker编排和调度平台 Kubernetes (K8s): Kubernetes是目前市场上最流行和功能最全面的容器编排和调度平台。它由Google开发并开源&#xff0c;现由CNCF&#xff08;云原生计算基金会&#xff09;维护。Kubernetes设计用于自动化容器部署、扩展和管理&#xff0c;支持跨…

出现nan nan

试着修改训练集大小或者batch_size大小&#xff0c;令训练集大小为batch_size的整数倍&#xff0c;不行 的话&#xff0c;看环境问题

8.k8s中网络资源service

目录 一、service资源概述 二、service资源类型 1.ClusterIP类型 2.service的nodeport类型 3.service的loadbalancer类型&#xff08;了解即可&#xff09; 4.service的externalname类型&#xff08;了解即可&#xff09; 三、nodeport的端口范围设置和svc的endpoint列表 1.修…

Jupyter Notebook魔术命令

Jupyter Notebook是一个基于网页的交互式笔记本&#xff0c;支持运行多种编程语言。 Jupyter Notebook 的本质式一个Web应用程序&#xff0c;便于创建和共享文学化程序文档&#xff0c;支持实现代码&#xff0c;数学方程&#xff0c;可视化和markdown。用途包括&#xff1a;数据…

Redis 实战2

系列文章目录 本文将从字典的实现、哈希算法、解决键冲突、rehash、渐进式rehash几方面来阐述 Redis 实战Ⅱ 系列文章目录字典的实现哈希算法解决键冲突rehash渐进式 rehash渐进式 rehash 执行期间的哈希表操作 字典 API总结 字典的实现 Redis 的字典使用哈希表作为底层实现&…

解决layui的bug 在layui tree 组件中 禁用选中父节点后自动选中子节点功能

最近做权限管理后台&#xff0c;用了layui tree 组件&#xff0c;发现选中了父节点后&#xff0c;自动选中了子节点。不满足现实业务需求。所以微调了下源代码。 在用树形组件中&#xff0c;在用文档中 tree.setChecked(demoId, [2, 3]); //批量勾选 id 为 2、3 的节点 用这句…

All In ai,Oracle 23C没了,等来了Oracle 23ai

今年一月份的Blog介绍Oracle命名规则的时候&#xff0c;说到Oracle的命名是紧紧跟随时代浪潮的前言科技的&#xff0c;在文章的最后还大胆预测也许Oracle的下一个版本就叫25A了&#xff0c;结果Oracle根本等不及&#xff0c;把原来已经海量宣传的Oracle 23C直接改名为23ai&…

【Mac】Lightroom Classic 2024 v13.1安装教程

软件介绍 Lightroom Classic 2024是Adobe公司推出的一款专业的数字图像处理软件&#xff0c;旨在为摄影师提供强大的工具和功能&#xff0c;以管理、编辑和分享他们的照片作品。以下是Lightroom Classic 2024的主要特点和功能&#xff1a; 数字照片管理&#xff1a; 提供直观…

k8s集群安装

目录 部署步骤概览 1、基础环境部署 2、docker环境部署 3、配置k8s集群 4、集群初始化 5、安装dashboard软件 写在前面&#xff1a;本文安装单点master多node的k8s集群&#xff0c;主要用于k8s学习或k8s环境测试&#xff1b;部署的是1.23版本&#xff0c;在1.24版本起&am…

Android 官网Ota介绍

构建 OTA 软件包 | Android 开源项目 | Android Open Source Project

【RabbitMQ】可靠性策略(幂等,消息持久化)

MQ可靠性策略 发送者的可靠性问题生产者的重连生产者确认 MQ的可靠性数据持久化Lazy Queue 消费者的可靠性问题消费者确认机制消息失败处理 业务幂等性简答问题 发送者的可靠性问题 生产者的重连 可能存在由于网络波动&#xff0c;出现的客户端连接MQ失败&#xff0c;我们可以…