C++ 在变量给定的指定时间范围内关闭 PC

-4 c++ windows operating-system system

我尝试使用具有不同数据类型的此代码变体在变量指示的时间内使用 C++ 关闭我的计算机。它不起作用。

system("shutdown -s -t %Charseconds");

system("shutdown -s -t %Intseconds");

system("shutdown -s -t %Stringseconds");


system("shutdown -t %Charseconds");

system("shutdown -t %Intseconds");

system("shutdown -t %Stringseconds");
Run Code Online (Sandbox Code Playgroud)

最小可重复性:

TurnOff(int seconds) 
{
    seconds = 10;
    string str = to_string(seconds);
    system("shutdown - s - t " + str);
}
Run Code Online (Sandbox Code Playgroud)

错误:没有合适的转换函数从“std::basic_string<char, std::char_traits<char>, std::allocator<char>>”到“const char *”

Rem*_*eau 7

system()不知道如何格式化这样的参数。它接受一个 C 风格的char*字符串并将其按原样传递给cmd.exe(作为/C开关的参数)。因此,它是你的责任,格式化可变输入字符串之前您传递它system()

您可以将 a 传递std::stringsystem()使用其c_str()方法,例如:

void TurnOff(int seconds)
{
    std::string str = "shutdown -s -t " + std::to_string(seconds);
    system(str.c_str());
}
Run Code Online (Sandbox Code Playgroud)

话虽如此,请考虑使用Task Scheduler API来调用关闭,而不是使用system().