我正在编写一个程序来熟悉输入和命令行参数。
我正在尝试扫描用户输入的'a'或'b',如果匹配则打印下一个给出的参数。出于某种原因,无论用户输入什么,它总是输出为“无效”。谁能看到我可能做错了什么?
int main(int argc, char* argv[])
{
if(argc != 5)
{ //checks if input is blank
cout << "Usage: <Function>, String, Usage: <Function>, String," << endl;
}
else
{
for(int i = 1; i<argc; i++)
{
cout << argv[i] << endl;
if(argv[i][1] == 'a')
{
cout << argv[i] << "ASCII" << endl;
}
if(argv[i][1] == 'b')
{
cout << argv[i] << "BINARY" << endl;
}
else
{
cout << "incorrect format" << endl;
}
}
}
}
答案 0 :(得分:4)
argv[i][1]
是字符串argv[i]
的第二个字符,因为C ++中的数组是从零开始的。
我认为您可能希望使用argv[i][0]
代替第一个字符。
请参阅以下代码以获取示例:
#include <iostream>
int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
std::cout << " Argument: " << argv[i] << '\n';
std::cout << " First: " << argv[i][0] << '\n';
}
return 0;
}
按照以下记录运行,给出预期的输出:
pax> testprog alpha beta gamma delta epsilon
Argument: alpha
First: a
Argument: beta
First: b
Argument: gamma
First: g
Argument: delta
First: d
Argument: epsilon
First: e