C++中文路径解决方案 汇总

c++中用system不能用中文路径吗,能的话怎么用?

c++system函数————一个函数打天下

C/C++中读取中文路径文件的方法

C++中文路径解决方案(2023亲测有效)

C++如何支持中文路径

-------------------------------------------------------

https://blog.csdn.net/ken2232/article/details/130316198
QString::toWCharArray 与 宽字符路径、空格 (测试OK)(***)

=================================

下面这个,可能是最通用的办法

c++中用system不能用中文路径吗,能的话怎么用?

 写一个程序,去调用另一个程序的话,可以用创建进程的方法来调用。
CreateProcess函数 来调用程序。路径里有中文没有问题的。

追问

这个函数的头文件是哪个,我不懂。
createprocess的参数都怎么设置

追答

第一个参数指定子应用程序路径和文件名第二个参数为传递给子进程的参数,你可以去网上查查这个函数看看

c++中用system不能用中文路径吗,能的话怎么用。_百度知道

头文件

#include <windows>

CreateProcess()函数原型

BOOL CreateProcess(
LPCTSTR lpApplicationName, //可执行程序名
LPTSTR lpCommandLine, //命令行字符串,可以为NULL。//指定了要传递给执行模块的参数。

        
LPSECURITY_ATTRIBUTES lpProcessAttributes, //新进程对象的安全属性
LPSECURITY_ATTRIBUTES lpThreadAttributes, //新进程对应的线程安全属性
BOOL blnheritHandles, //指定父进程的对象句柄能否被子进程继承

        
DWORD dwCreationFlags, //指定创建进程的附加标记,即指定新进程的特性
LPVOID lpEnvironment, //指定新进程使用的环境,NULL表示同父进程的环境
LPCTSTR lpCurrentDirection, //指定子进程当前路径,NULL表示同父进程相同

        
LPSTARTUPINFO lpStartupInfo, //指定新进程主窗口如何显示
LPPROCESS_INFORMATION lpProcessInformation, //作为返回值使用,是一个指针
);

CreateProcess()函数_Layznana的博客-CSDN博客

CreateProcess( 
    LPCSTR lpApplicationName, //可执行文件的名称
    LPSTR lpCommandLine, //指定了要传递给执行模块的参数。
    LPSECURITY_ATTRIBUTES lpProcessAttributes, //进程安全性,值为NULL 的话表示使用默认的安全属性
    LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程安全性,值为NULL 的话表示使用默认的安全属性
    BOOL bInheritHandles, //指定了当前进程中的可继承句柄是否可被新进程继承。
    DWORD dwCreationFlags, //指定了新进程的优先级以及其他创建标志
    LPVOID lpEnvironment, //指定新进程使用的环境变量
    LPCSTR lpCurrentDirectory, //新进程使用的当前目录
    LPSTARTUPINFO lpStartupInfo, //指定新进程中主窗口的位置、大小和标准句柄等
    LPPROCESS_INFORMATION lpProcessInformation //【out】返回新建进程的标志信息,如ID 号、句柄等
);

=======================================

C++支持中文路径 

https://www.cnblogs.com/345717675GISER/p/4774054.html

C/C++中读取中文路径文件的方法

解决办法:
1、使用C语言的函数设置为中文运行环境
setlocale(LC_ALL,"Chinese-simplified");

2、使用STL函数设置为系统语言环境
std::locale::global(std::locale(""));

转载网友方法:

/* 方法1,使用_TEXT()宏定义将字符串常量指定为TCHAR*类型 这种情况下必须是unicode下编译                */
18:     /* 如果是我,首选此类型                                                 */
19:     /************************************************************************/
20:     fstream file;
21:     file.open(_TEXT("c:\\测试\\测试文本.txt"));
22:     cout<<file.rdbuf();
23:     file.close();
24:
25:     /************************************************************************/
26:     /* 方法2,使用STL中的locale类的静态方法指定全局locale                   */
27:     /* 使用该方法以后,cout可能不能正常输出中文,十分蹊跷                    */
28:     /* 我发现了勉强解决的方法:不要在还原区域设定前用cout或wcout 输出中文   */
29:     /* 否则后果就是还原区域设定后无法使用cout wcout输出中文                 */
30:     /************************************************************************/
31:     locale::global(locale(""));//将全局区域设为操作系统默认区域
32:     file.open("c:\\测试\\测试文本2.txt");//可以顺利打开文件了
33:     locale::global(locale("C"));//还原全局区域设定
34:     cout<<file.rdbuf();
35:     file.close();
36:
37:     /************************************************************************/
38:     /* 方法3,使用C函数setlocale,不能用cout输出中文的问题解决方法同上      */
39:     /************************************************************************/
40:     setlocale(LC_ALL,"Chinese-simplified");//设置中文环境
41:     file.open("c:\\测试\\测试文本3.txt");//可以顺利打开文件了
42:     setlocale(LC_ALL,"C");//还原
43:     cout<<file.rdbuf();
44:     file.close();
45: }

C/C++中读取中文路径文件的方法_c++ 中文路径_我是小超斌的博客-CSDN博客

c++system函数————一个函数打天下

https://blog.csdn.net/CSDN_Anonymous/article/details/120930766

// system();默认支持 lating1,以及带空格的路径 ?

   string a,b;

    a="copy D:\\IntelHDGraphicsDriversforWindows(R).exe \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\IntelHDGraphicsDriversforWindows(R).exe\"";

    system(a.data());


————————————————
版权声明:本文为CSDN博主「“吉祥”物」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CSDN_Anonymous/article/details/120930766

C++中文路径解决方案(2023亲测有效)

方法2:使用Qt

进行读写包含中文路径的操作时,使用如下格式(注意字符串前的L):

int main(){  
    char* x = wchar2char(L"C:\\users\\arcueidbrunestud\\desktop\\你好.txt");
    ofstream ofs(x);
    if (ofs.is_open()) printf("true\n");
    else printf("false\n");
    return 0;
}

C++如何支持中文路径

适用:win OS

while (_wfindnext(handle, &fileinfo) == 0);

C++如何支持中文路径__wfindfirst 不支持中文路径吗_Diehard_Yin的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值