将值传递给main(int,char**)
Passing values to main(int, char**)
我有一个显示ascii值和字母的程序,但现在我修改了程序,只显示我要查找的西班牙语字符。这个程序被称为"ascii"。用户要做的是键入C:>ascii
或C:>ascii all
来显示所有ascii字符。要只显示西班牙语字符,用户必须键入C:>ascii es
。
为此,我写了这个简单的程序
int main(int argc, char** argv) {
if(argv[0] == "es"){
abc::ascii_es();
}
if(argv[0] == "all"){
abc::ascii_all();
}
else
abc::ascii_es();
return 0;
}
但是程序总是跳转到else条件关键字中的CCD_ 4方法。我做错了什么?
问题:
- 你不是在比较字符串,而是在比较指针。您可以通过将其中一个参数更改为
std::string
或使用strcmp(...) == 0
来解决此问题 argv[0]
是程序的名称。使用argv[1]
作为第一个参数- 您没有检查程序是否存在参数。如果没有,那么访问
argv[1]
将导致未定义的行为
一些工作代码:
#include <string>
int main(int argc, char** argv) {
if (argc < 2)
abc::ascii_es();
else if (argv[1] == std::string("es"))
abc::ascii_es();
else if (argv[1] == std::string("all"))
abc::ascii_all();
else
abc::ascii_es();
return 0;
}
相关文章:
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- C++ (U256)*(H256 const*)(char*[] + int) 将重写转换为 Java
- char*(int)在C 中是什么意思
- 是否可以<char> <int> 在 C++ 中将 std::list 转换为 std::list
- Qt5 对'QApplication::QApplication(int&, char**, int)'的未定义引用
- 没有运算符"="匹配这些操作数操作数操作数类型为 std::basic_ostream<char、std::char_traits<char>> = int
- 编程语言中的 char-int 等价性
- C++。为什么 std::cout << char + int 打印 int 值?
- 关于运行良好的堆栈RPN程序上的char/int
- 在 C# 中从 char int 直接转换为 char
- 从文本文件中提取特定值(char & int)并插入到多个变量中C++
- 编译错误 - 数组下标'char[int]'的类型无效
- 从“char*”到“char”[-fpermissive]的转换无效,数组下标的类型“char[int]”无效
- 如何在文件中读取,其中包含char, int和空白到链表
- 如何在我的程序中查找"const char* + int"表达式
- While loop and cin char, int
- 如何将输入作为字符串,并将每个字符标识为char, int或float
- 如何正确使用char[int]