Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 比较argv和L“;测试“;不起作用_C++ - Fatal编程技术网

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您需要使用as
argv
是一个
char*
数组

您的代码比较指针而不是字符串内容。

您需要使用as
argv
是一个
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
对象只会浪费时间和内存