#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/