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);