C++ 比较argv和L“;测试“;不起作用
所以我有C++ 比较argv和L“;测试“;不起作用,c++,C++,所以我有 if(argv[0] == L"test") { cout << "it is test"; } else { cout << "Nope." } if(argv[0]==L“测试”){ cout您需要使用asargv是一个char*数组 您的代码比较指针而不是字符串内容。您需要使用asargv是一个char*数组 您的代码比较指针而不是字符串内容。您可以使用wcscmp() 主函数必须为argv[0]传递一个宽字符,如下所示: int mai
if(argv[0] == L"test") {
cout << "it is test";
}
else {
cout << "Nope."
}
if(argv[0]==L“测试”){
cout您需要使用asargv
是一个char*
数组
您的代码比较指针而不是字符串内容。您需要使用asargv
是一个char*
数组
您的代码比较指针而不是字符串内容。您可以使用wcscmp()
主函数必须为argv[0]传递一个宽字符,如下所示:
int main(int argc, wchar_t*argv[])
然后你可以做:
if (wcscmp(argv[0], L"test"))
您可以使用wcscmp()
主函数必须为argv[0]传递一个宽字符,如下所示:
int main(int argc, wchar_t*argv[])
然后你可以做:
if (wcscmp(argv[0], L"test"))
<> P>一个更类似C++的解决方案是:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, wchar_t* argv[])
{
if (argv[0] == wstring(L"test")) {
cout << "it is test";
}
else {
cout << "Nope.";
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(int argc,wchar_t*argv[])
{
如果(argv[0]==wstring(L“测试”)){
Cu>P>一个类似C++的解决方案是:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, wchar_t* argv[])
{
if (argv[0] == wstring(L"test")) {
cout << "it is test";
}
else {
cout << "Nope.";
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(int argc,wchar_t*argv[])
{
如果(argv[0]==wstring(L“测试”)){
当比较wchar\u t
字符串(L“test”
)和char
字符串时,它会有点复杂。一些mbstowcs()
和wcscmp()
的组合是有序的。比较wchar\u t
字符串(L“test”
)时,它会有点复杂到char
字符串。一些mbstowcs()
和wcscmp()的组合
应该是正确的。传递的参数实际上是一个宽字符串吗?如果是,那么您用来编译的环境可能已经做出规定,专门处理提供给main
的宽字符串的命令参数(例如,我相信VisualStudio对参数数组有TCHAR**
。@PaulMcKenzie不在乎arv[0]==任何类型的字符串都不起作用。需要某种形式的strcmp是的,我知道。只是想知道运行时是否真的能够发送宽字符串参数。@BoPersson这个问题涉及wchar\u t
问题,而另一个问题不涉及,所以我想知道是否应该重新打开它。实际上,正在传递的参数是wide字符串?如果是,那么您用来编译的环境可能已经制定了专门处理给定给main
的宽字符串的命令参数的规定(例如,我认为Visual Studio为参数数组提供了TCHAR**
。@PaulMcKenzie不在乎arv[0]==任何类型的字符串都不起作用。需要某种形式的strcmp是的,我知道。只是想知道运行时是否真的能够发送宽字符串参数。@BoPersson这个问题涉及wchar\t
问题,而另一个问题则没有,所以我想知道是否应该重新启动。谢谢,这很好。这篇文章ked great.not a fan personal-wcscmp
存在并正常工作;构造两个wstring
对象只会浪费时间和内存不是fan personal-wcscmp
存在并正常工作;构造两个wstring
对象只会浪费时间和内存