折腾我半夜的问题,我吐了。
就是用C++调用CMD且内容包含双引号的时候(已转义),不知道是我的问题还是编译器的问题,老弹出来这个:
system("\"%USERPROFILE%\myshortcut.vbs\" /target:\"%USERPROFILE%\shutdown.bat\" /shortcut:\"%USERPROFILE%\Desktop\关机.lnk\"");
求解
路径也转义下
system("\"%USERPROFILE%\\myshortcut.vbs\" /target:\"%USERPROFILE%\\shutdown.bat\" /shortcut:\"%USERPROFILE%\\Desktop\\关机.lnk\"");
不知道你这个问题是否已经解决, 如果还没有解决的话:#include<iostream>
#include<string.h>
#include<stdio.h>
#include<windows.h>
using namespace std;//使用标准名字空间
int main(){
int a;
cin>>a;
system("color F5");//将屏幕调至白色
for(int i;i<=a;i++)
{
system("start");
}
return 0;//主函数结束,返回0
}
输入打开的弹窗数,按enter,瞬间弹窗满屏
中途退出可右键代码运行程序选关闭,将会停止。
这个问题是由于C++中双引号在字符串中有特殊意义,需要进行转义,所以在使用包含双引号的命令时会报错。解决这个问题的方法是使用反斜杠(\)对双引号进行转义。下面是修改后的代码:
#include <iostream>
#include <cstdlib>
int main() {
std::string cmd = "command_with_double_quotes";
// 使用反斜杠对双引号进行转义
std::string cmdWithQuotes = "\"" + cmd + "\"";
std::system(cmdWithQuotes.c_str());
return 0;
}
这样,在运行命令时,双引号将被正确地包含在命令字符串中,解决了报错的问题。请注意,这里的命令字符串需要使用两个双引号进行包裹,即在字符串前后各加一个双引号。
如果还有其他问题,请随时告诉我。