c++ - 为什么 if 语句忽略命令行参数?
问题描述
我正在尝试制作一个带有一个参数的简单程序。我用作主要:
int main(int argc, char* argv[]) {
if (argv[1] == "string") {
cout<<"STRING AS ARG!!"<<endl;
}
return 0;
}
但是当我运行它时program.exe string
没有任何反应。这段代码有什么问题?
解决方案
问题是两个操作数都是 C 字符串,并且比较进行原始指针比较。您需要至少创建一个操作数 astd::string
或 a std::string_view
。
std::string_view
是最好的选择,因为它避免了 的开销std::string
,但您需要 C++17:
#include <string_view>
using namespace std::literals;
if (argv[1] == "string"sv)
std::string
版本。如果你有 C++14,你可以使用文字:
#include <string>
using namespace std::literals;
if (argv[1] == "string"s)
或者,如果您是 C++14 之前的版本:
#include <string>
if (argv[1] == std::string("string"))
推荐阅读
- mysql - SQL QUERY:想查询每个movie_type有多少观众;(其中喜剧 = 喜剧和戏剧喜剧)
- node.js - Node js es6 import and export
- c# - 替换不需要的字符时如何防止某些单词一起运行?
- java - Unity AndroidJavaObject not working without showing errors
- javascript - 使用通用函数来处理用户在 REACT 中单击时多个基于数组的相似状态的变化
- javascript - CSS Grid 容器高度覆盖其他内容
- ruby-on-rails - 使用acts_as_taggable时如何限制tag_counts个项目
- spring-boot - OpenApi - 有没有办法在使用 springdoc-openapi-maven-plugin 生成的合同中使用带有鉴别器部分的 ComposedSchema?
- matlab - 单元格与 Matlab 中的数组有何不同?
- c# - 在 c# winform 中展开/折叠功能区的问题