将char转换为bool(将bool传递给main)
Convert char to bool (passing bool to main)
是否有推荐/正确/更安全的方式将bool参数传递给主函数?
$ ./my_software true
将此作为my_software
:
int main(argc, argv* []){
bool my_bool = argv[1];
return 0;
}
和
$ ./my_software 1
作为my_software
:
int main(argc, argv* []){
bool my_bool = atoi(argv[1]);
return 0;
}
等价?我是不是漏掉了第一个转换?
c++流可以处理这个问题。别忘了检查argv[1]
是否真的存在!
#include <sstream>
//...
std::stringstream ss(argv[1]);
bool b;
if(!(ss >> std::boolalpha >> b)) {
// Parsing error.
}
// b has the correct value.
Live on Coliru
放入std::boolalpha
流操纵符可以解析"true"answers"false",不放入则可以解析"0"answers"1"。
至于正确的方法,有很多。但是你提出了一些不安全/不正确的方法。首先,您不能保证argv
的长度为2或更高,您必须在查看argv[1]
(或argv
中的任何内容)之前检查argc
。
第二,你不能保证在argv[1]
中获得特定的内容,即使它确实存在。它可以是任何字符串,而不仅仅是预期的"0"
或"1"
(它甚至可以是空字符串),所以只是通过atoi
运行它可能不是一个明智的选择。
是的,您在第一个示例中遗漏了一个转换,大多数编译器应该发出诊断。代码无论如何都不能工作,即使它编译了,因为它试图将原始字符指针转换为bool值,甚至不会查看字符串的内容。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 写入向量<向量<bool>>
- 代码在main()中运行,但在函数中出现错误
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 函数是否可以访问传递给main()的参数
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 让bool方法返回其他整数
- 我的 int main() 中出现堆栈溢出错误
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- 当我尝试在 Main 中调用插入函数时,它不是取数字?
- 如何在 std::vector 中找到<bool>哪些索引是真的?
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- Arduino-C++ bool 不会从 false 变为 true
- 为什么类和 main() 函数中也有动态内存分配
- 在 main.cpp 的上下文中找不到目录(带有 CMake 的快板)
- 为什么在这种情况下,bool 类型的输出等于 0?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 将char转换为bool(将bool传递给main)