将 char 转换为 bool(将 bool 传递给 main)

Thr*_*iag 1 c++ program-entry-point boolean

是否有推荐/正确/更安全的方法将 bool 参数传递给您的主函数?

这是

$ ./my_software true
Run Code Online (Sandbox Code Playgroud)

与此为my_software

int main(argc, argv* []){

    bool my_bool = argv[1];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和这个

$ ./my_software 1
Run Code Online (Sandbox Code Playgroud)

与此为my_software

int main(argc, argv* []){

    bool my_bool = atoi(argv[1]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

相等的?我错过了第一个转换吗?

Que*_*tin 6

C++ 流可以处理这个问题。不要忘记检查是否argv[1]确实存在!

#include <sstream>
//...
std::stringstream ss(argv[1]);
bool b;

if(!(ss >> std::boolalpha >> b)) {
    // Parsing error.
}

// b has the correct value.
Run Code Online (Sandbox Code Playgroud)

住在 Coliru

放入std::boolalpha流操纵器可以解析“true”和“false”,将其省略将让它解析“0”和“1”。