【发布时间】:2014-05-14 01:49:09
【问题描述】:
我想将 argv[(本例中为 2)] 存储到向量中,稍后在程序中使用。问题是没有操作数匹配那些操作数 std::string == int。那么这是否意味着应用程序将'-r'视为int?我在这里有点困惑。
int main(int argc, char* argv[])
{
std::vector<std::string> argList;
cout<<"argc: "<<argc<<endl;
for(int i=2; i<=argc; i++)
{
argList.push_back(argv[i]);
}
if(argList.at(2) == '-r') cout<<" Good job ";
}
【问题讨论】:
-
你只需要双引号来生成字符串文字:
"-r"。使用单引号,它是 int 类型的文字。 -
argv[2] 被放置在 argList[0] 并且 argList[2] 包含 argv[4] 那么您是否将 4 个参数传递给您的程序?确实,您应该在尝试访问元素 2 之前检查向量的大小
-
@AndrewMedico 实际上是
char类型,可以自动装箱成 int。 -
哎呀,你是对的 - C 和 C++ 之间的区别之一。我不会说“自动装箱”(也许是“隐式转换”)——C++ 不做装箱,
int也不是对象。