c++ - 如何将命令行参数转换为 vector ,而每个字符都具有不同的值?

标签 c++ vector char command-line-arguments

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
/*
void square(cLine, height){

}
*/
//void insertVector(vector<char> & cLine, )
int main(int argc, char *argv[]){
    if (argc != 5){
        cerr << "Incorrect number of arguments" << endl;
        return 1;
    }
    ofstream writeFile(argv[4]);
    if (!writeFile.good()){
        cerr << "Bad file, could not open" << endl;
        return 1;
    }
    int arrayLength = sizeof(argv[1]);
    vector<string> cLine;
    string cString(argv[1]);
    for(int i=0,i<arrayLength-2,++i){
        cLine.push_back(cString.substr(i,i+1));
    }
    cout << cLine << endl;
}

我正在尝试将参数argv [1]设置为 vector ,以便以后可以方便地对其进行拼接,我知道该参数是ac样式char *数组,但我不知道如何将其转换为 vector ,每个索引都是一个字符,但可以打印到控制台。

最佳答案

这个宣言

int arrayLength = sizeof(argv[1]);

这没有任何意义,因为sizeof(argv[1])sizeof( char * )等效,并且不产生参数中的字符数。

这个说法
cout << cLine << endl;

也没有意义,因为模板类operator <<没有重载的std::vector

而且这个for循环
for(int i=0,i<arrayLength-2,++i){

在语法上是不正确的。

您需要的是以下内容
#include <cstring>

//…

std::vector<char> cLine( argv[1], argv[1] + std::strlen( argv[1] ) );
for ( const auto &c : cLine ) std::cout << c;
std::cout << '\n';

关于c++ - 如何将命令行参数转换为 vector ,而每个字符都具有不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59830625/

相关文章:

c++ - 在运算符表达式上下文中纠正重载解析的内置运算符候选的行为

c++ - 从映射中的嵌套对引用值

c++ - 在 C++ 中检查 vector 的所有元素是否相等

c++ - 需要改变的东西

c - 在井字游戏中找到赢家

c# - 如何创建向后兼容 Windows 7 的缩放和大小更改的每显示器 DPI 感知应用程序?

c++ - 从 'BYTE *' 到 'ULONG' 的指针截断

c++ - vector LNK2005 错误

C:如何在结构中存储二维字符数组?

c - 在 char 数组上使用 'free' 时出错