命令行参数,cant 或两个变量
command line argument, cant or two variables
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char* argv[])
{
string s = "all";
string t = "top";
for (int i=1; i<argc ; i++)
{
cout<< argv[i]<< endl;
if( argv[2] != s || t)
{
cout<<"INVALID MODE"<< endl;
return -1;
}
}
}
没有从"std::__1::string"(又名"basic_string,分配器>"(到"布尔"无效操作数到二进制的可行转换
表达式('bool' 和 'std::__1::string' (又名 'basic_string, 分配器>'((
您好,我正在传递命令行参数,例如"1 所有空文件"和"1 顶部空文件",在这里我想测试第二个参数是否不是全部或顶部以打印出"无效模式"。 我无法理解为什么我不能使用 s||我收到上面发布的错误,无论如何都有这个
多亏了这个网站,我得到了帮助,但我还有另一个问题,如果我有 top 或 all 作为第二个参数,我希望它不要打印出"无效模式"。 但它似乎仍然是打印输出"无效模式",在这种情况下,所有都是第二个参数,但当 top 是第二个参数时似乎没有打印。
再次非常感谢,我遇到问题的另一件事是,在没有通过参数的情况下如何打印出"没有短语长度"? 如何测试。
另外我如何测试第一个参数是否是整数?,所以如果它不是整数并且是负数,请打印出"无效的短语长度">
您的表达式argv[2] != s || t
被分组为(argv[2] != s) || t
,||
的左手参数是bool
类型,这是一个问题,因为对于需要bool
的std::string
,没有重载的||
运算符。这解释了神秘的编译器消息。
这里的解决方案是写
argv[2] != s && argv[2] != t
相反。请注意,我已经切换了||
&&
否则条件检查总是true
,你的程序将总是输出"INVALID MODE"
!有些语言的工作方式与您一样;C++没有。
你必须像这样测试
if( (argv[2] != s) && (argv[2] != t))
某些脚本语言允许您像在问题中所做的那样进行比较。PERL就是这样一种语言。
相关文章:
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 命令行参数,cant 或两个变量
- 在 for 循环中更新两个变量时遇到问题C++
- C++ 编译时在两个变量之间交替
- C++ 如何在包含两个变量的结构中存储与变量不同数量的值?
- 为什么一个接一个声明的两个变量在内存中不相邻?
- 为什么动态分配的两个变量的内存位置不是连续的?
- 是否可以在C++中使用宏交换两个变量的出现?
- 计算机如何分配两个变量,我们如何计算两个变量之间的距离?
- 正确证明C 中的两个变量合理(我想将它们视为一个变量)
- 可视C 编译器将相同的存储位置提供给两个变量
- 尝试使用 {} 和 std::make_pair() 交换两个变量时的行为不同
- 在rootframework中的根文件中编写两个变量
- 最短路径,带有两个变量
- 加入两个变量和LCD打印
- 在循环中声明两个变量以逆转字符串?在C 中
- 具有两个变量的"for"循环,一个变量每次迭代递增,每隔一次迭代递增
- 如何在C++中使用一个类中两个变量的值
- 仅在C 中的一个变量上,两个变量函数的数值集成(使用数值配方库)
- 如何在我存储的两个变量之间生成随机数