吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 939|回复: 12
收起左侧

[求助] QT 如何向TXT写入 ANSI格式字符串

[复制链接]
隐藏英雄 发表于 2023-2-4 18:37
我想把下面这句代码以 ANSI格式 写入d:\1.txt 内  改怎么写呢 请大佬帮忙  完整方法
[C++] 纯文本查看 复制代码
if exist "" "C:\Program Files (x86)\3.exe" start "" "C:\Program Files (x86)\3.exe" 2>nul

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

MarioCrane 发表于 2023-2-5 01:40
本帖最后由 MarioCrane 于 2023-2-5 01:41 编辑
隐藏英雄 发表于 2023-2-5 01:22
大佬 用你的方法我成功的将字符串写进了txt文本,但是新的问题更复杂了,路径中存在中文的话 批处理会乱 ...

可以使用QString的转换功能,QString::toLocal8Bit()

[C++] 纯文本查看 复制代码
    QFile file{ "C:/测试/test.bat" };
    if (file.open(QIODevice::WriteOnly)) {
        file.write(QString{ R"(ren "C:\测试\a.exe" b.exe 2>nul)" }.toLocal8Bit());
        file.flush();
        file.close();
    }

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
隐藏英雄 + 2 + 1 谢谢@Thanks!

查看全部评分

btc001 发表于 2023-2-4 19:33
[Asm] 纯文本查看 复制代码
if exist \"\" \"C:\\Program Files (x86)\\3.exe\" start\ "\"\"C:\\Program Files (x86)\\3.exe\" 2>nul


字符串转义就可以了啊
xouou 发表于 2023-2-4 20:36
     QTextStream out(&file);
     out.setCodec("utf-8");
可以指定字符集编码

但是楼主说的ANSI格式, 他并不是一种编码, 而是一种字符显示模式,  在不同的电脑中, 调用的字符集是不同的;

qt支持和的字符集编码如下
The supported encodings are:
Big5
Big5-HKSCS
CP949
EUC-JP
EUC-KR
GB18030
HP-ROMAN8
IBM 850
IBM 866
IBM 874
ISO 2022-JP
ISO 8859-1 to 10
ISO 8859-13 to 16
Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
KOI8-R
KOI8-U
Macintosh
Shift-JIS
TIS-620
TSCII
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
Windows-1250 to 1258

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
隐藏英雄 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 隐藏英雄 发表于 2023-2-4 20:49
本帖最后由 隐藏英雄 于 2023-2-4 20:51 编辑
xouou 发表于 2023-2-4 20:36
QTextStream out(&file);
     out.setCodec("utf-8");
可以指定字符集编码

大佬你好,那要是如果我在QT中要将
[C++] 纯文本查看 复制代码
H:/QT/test/build-test-Desktop_Qt_6_2_4_MinGW_64_bit-Debug/debug/test.exe
   
上面这样的路径变量,在写入txt后变为下面的这样的路径  什么样的办法能很好的实现
[C++] 纯文本查看 复制代码
H:\QT\test\build-test-Desktop_Qt_6_2_4_MinGW_64_bit-Debug\debug\test.exe


hxs1 发表于 2023-2-4 22:38
学习下,
冥界3大法王 发表于 2023-2-5 00:04
人家举例说的是批处理
可要的是QT的实现
楼上几位合适吗?
MarioCrane 发表于 2023-2-5 00:22
本帖最后由 MarioCrane 于 2023-2-5 00:26 编辑
隐藏英雄 发表于 2023-2-4 20:49
大佬你好,那要是如果我在QT中要将
[mw_shl_code=cpp,true]
H:/QT/test/build-test-Desktop_Qt_6_2_4_M ...

52的回复有bug,看我最新的回帖吧
MarioCrane 发表于 2023-2-5 00:25
正常写入没有问题
[C++] 纯文本查看 复制代码
QFile file{ "config.txt" };
if (file.open(QIODevice::WriteOnly)) {
    file.write("H:/QT/test/build-test-Desktop_Qt_6_2_4_MinGW_64_bit-Debug/debug/test.exe");
    file.flush();
    file.close();
}


不过根据你的现象,我猜测你使用到了QDir来获取的路径。QDir存在一个斜杠与反斜杠的转换操作。
[C++] 纯文本查看 复制代码
// 斜杠转反斜杠  / to \
// input C:/config.text
// output C:\\config.text
auto a = QDir::toNativeSeparators(path);

// 反斜杠转换斜杠  \ to /
// input C:\\config.text
// output C:/config.text
auto a = QDir::fromNativeSeparators(path);
 楼主| 隐藏英雄 发表于 2023-2-5 01:22
本帖最后由 隐藏英雄 于 2023-2-5 01:33 编辑
MarioCrane 发表于 2023-2-5 00:25
正常写入没有问题

大佬 用你的方法我成功的将字符串写进了txt文本,但是新的问题更复杂了,路径中存在中文的话 批处理会乱码 导致执行失败
我有下面这样一个变量 里面存的是一个路径   
[C++] 纯文本查看 复制代码
QString renname = QString("ren %1 %2 2>nul \n") .arg(WorkToolname) .arg(NowFilename);

写入txt后是这样的路径
[C++] 纯文本查看 复制代码
ren "D:\Documents\测试文件夹\main.exe" test.exe 2>nul 

但是这样写入中文路径 的批处理是不能正确执行的,需要将renname这个变量中的字符串转换为GB2321的编码格式要怎么写才可以呢?
执行后是这样的
QQ图片20230205012746.png

 楼主| 隐藏英雄 发表于 2023-2-5 01:26
冥界3大法王 发表于 2023-2-5 00:04
人家举例说的是批处理
可要的是QT的实现
楼上几位合适吗?

法王大佬,求指点  QT怎么写一个能执行中文路径的 bat
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表