我正在开发一个小程序,它可以计算出用户给出的数字。他们输入的数字存储在变量limit
中。我希望该变量中的数字显示在标题类型中:“计数最多3000”或“限制设置为3000”或类似的东西。我尝试使用SetConsoleTitle(limit);
和其他东西,但它们只是不起作用。使用我发布的代码,我收到以下错误:
类型“int”的参数与“LPCWSTR”类型的参数不兼容
我目前正在使用Visual Studio 2015,如果这在任何方面都很重要。
#include <iostream>
#include <windows.h>
#include <stdlib.h>
using namespace std;
int main()
{
begin:
int limit;
cout << "Enter a number you would like to count up to and press any key to start" << endl;
cin >> limit;
SetConsoleTitle(limit); // This is my problem
int x = 0;
while (x >= 0)
{
cout << x << endl;
x++;
if (x == limit)
{
cout << "Reached limit of " << limit << endl;
system("pause");
system("cls");
goto begin;
}
}
system("pause");
return 0;
}
答案 0 :(得分:0)
SetConsoleTitle()函数需要一个字符串作为参数,但是你给它一个整数。一种可能的解决方案是使用std::to_wstring()将整数转换为宽字符串。因此得到的C ++字符串与 SetConsoleTitle()期望的以null结尾的宽字符字符串的格式不同,因此我们需要使用c_str()方法进行必要的转换。所以,而不是
SetConsoleTitle(limit);
你应该
SetConsoleTitle(to_wstring(limit).c_str());
别忘了#include <string>
让 to_wstring()工作。
如果您想要的标题不仅包含数字,那么您需要使用字符串流(在这种情况下为wide character string stream):
wstringstream titleStream;
titleStream << "Counting to " << limit << " goes here";
SetConsoleTitle(titleStream.str().c_str());
要使字符串流有效,#include <sstream>
。这是完整的代码:
#include <iostream>
#include <string>
#include <sstream>
#include <windows.h>
#include <stdlib.h>
using namespace std;
int main()
{
begin:
int limit;
cout << "Enter a number you would like to count up to and press any key to start" << endl;
cin >> limit;
wstringstream titleStream;
titleStream << "Counting to " << limit << " goes here";
SetConsoleTitle(titleStream.str().c_str());
int x = 0;
while (x >= 0)
{
cout << x << endl;
x++;
if (x == limit)
{
cout << "Reached limit of " << limit << endl;
system("pause");
system("cls");
goto begin;
}
}
system("pause");
return 0;
}