C++在变量给定的指定时间内关闭电脑

C++ Turn Off a PC within a specified timeframe given by a variable

本文关键字:定时间 电脑 变量 C++      更新时间:2023-10-16

我试图使用不同数据类型的代码变体,在一个变量指定的时间内用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");

最小可重复性:

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

错误:没有合适的转换函数从"std::basic_string<char,std::char_traits<char>,std::分配器<char>gt"至";const char*";

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

您可以使用c_str()方法将std::string传递给system(),例如:

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

也就是说,考虑使用任务调度程序API来调用关闭,而不是使用system()

shutdown - s - t " + str的结果是std::stringsystem期望一个常量C字符串(const char *(。你必须转换它,例如:

system(("shutdown - s - t " + str).c_str());