C++像Java这样的命令行字符串
C++ command line strings like Java?
有没有办法像在 Java 中那样从命令行获取 c++ 字符串?
public static void main(String[] args)
其中 args 是C++字符串数组?
不完全是,但你可以很容易地接近。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
typedef vector<string> CommandLineStringArgs;
int main(int argc, char *argv[])
{
CommandLineStringArgs cmdlineStringArgs(&argv[0], &argv[0 + argc]);
for (int i = 0; i < cmdlineStringArgs.size(); ++i)
{
cout << cmdlineStringArgs[i] << endl;
}
return 0;
}
这只使用 std::vector 的重载构造函数,该构造函数采用开始/结束迭代器对将命令行参数复制到向量中。 从那里开始,它与java大致相同。
您同样可以使用实用程序方法来构建和反对该向量来转换参数,但几乎没有意义。 此外,还有很多带有对象的包,用于解释命令行开关等。 ACE、POCO、QT 等。所有设施均配有此类设施。
您可以使用向量将 char 数组转换为字符串。
#include <vector>
#include <string>
using namespace std;
int main (int argc, char** argv)
{
vector <string> args (argv, argv + argc);
}
是的,主函数可以接受 2 个参数
int main(int argc, char* argv[])
其中argc
是参数的数量,argv
包含参数的列表。
例如,如果以下列方式运行程序:
MyProgram.exe hello
然后
argc = 2
argv[0] = MyProgram.exe
argv[1] = "hello"
不是内置于语言中,但它很容易实现:
#include <vector>
#include <string>
using namespace std;
int main( int argc, char *argv[] ) {
vector <string> args;
for ( int i = 0; i < argc; i++ ) {
args.push_back( argv[i] );
}
// do something with args
}
在 C 中,您的主函数签名如下所示:
int main(int argc, char** argv)
.
argc
包含命令行传入的参数数。可执行文件的名称位于位置 0,并将 1 添加到 argc
。
argv
包含包含参数的字符串数组。同样,位置 0 是可执行文件的名称。
标准的C++ main()
签名是
int main(int argc, char* argv[])
其中argc
表示命令行参数的计数,argv[]
是保存命令行参数的原始 C 字符串数组。 argv[0]
是可执行文件,从命令行调用。
如果你正在编写一个win32应用程序,你可以使用GetCommandLineW http://msdn.microsoft.com/en-us/library/ms683156(VS.85).aspx和CommandLineToArgW http://msdn.microsoft.com/en-us/library/bb776391(VS.85).aspx
CommandLineToArg 页面上有一条关于特殊处理的评论,如果可执行文件在路径中有空格并且没有您可能必须处理的参数,则需要特殊处理。
- 从命令行c++发送文本文件名
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 将字符串作为命令行参数传递
- 在 linux 上使用命令行重定向(wiith <)将文件内容存储在字符串中?
- 在 C++ 中逐行读取命令行的输出到字符串向量中
- 尝试从命令行参数读取字符串"$$"
- C++ 通过命令行应用将要列出的字符串添加到 txt 文件
- 将命令行参数传递给 c 中的 c 字符串和指针
- 如何将命令行参数作为字符串传递给从C++执行的嵌入式 Python 脚本
- 从命令行读取文本文件,并将文件内容存储到c字符串中
- c++:如何将字符串分解(而不是解析)为命令行参数
- 将字符串读取为命令行参数C++
- 如何在c++中将命令行字符串转换为hwnd
- Visual studio c++从命令行输入大字符串
- Cmake:如何通过命令行向变量追加字符串
- 将命令行参数转换为字符串
- 将命令行字符串lpszCmdLine传递给c中的WM_CREATE
- C++像Java这样的命令行字符串
- 如何输出捕获为命令行参数子字符串的 unicode 字符