gpt4 book ai didi

c++ - 将二维数组和字符串 vector 作为参数传递给函数

转载 作者:行者123 更新时间:2023-11-30 01:46:17 41 4
gpt4 key购买 nike

我写了两个函数,其中我将字符串 vector 传递给特定函数 (PrintStringVector) 只是为了打印内容,在第二个函数中,传递指针数组来打印内容。第一个函数工作正常,但第二个一个是在我的代码下面给出错误。

#include <cmath>
#include <stdlib.h>
#include <cstdio>
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int n;

void PrintStringVector(vector<string> & v){


for(int i=0;i<v.size();i++){ cout<<v[i]<<endl;}

}


void PrintStringArray(const char *arr[n]){

for(int i=0;i<n;i++){ cout<<arr[i]<<endl;}



}

int main() {

vector<string> vec;
cin>>n;
const char *arr[n];

for(int i=0;i<n;i++){
string str;
cin>>str;
vec.push_back(str);
arr[i]=str.c_str();
}

PrintStringVector(vec);
PrintStringArray(arr);


return 0;
}

错误:

        vinod@vinod-Inspiron-3537:~/Documents/hackerrank$ g++       passing_vector_of_string_or_passing_2d_array.cpp 
passing_vector_of_string_or_passing_2d_array.cpp:17:35: error: expected ‘,’ or ‘...’ before ‘arr’
void PrintStringArray(const char* arr[n]){
^
passing_vector_of_string_or_passing_2d_array.cpp: In function ‘void PrintStringArray(const char*)’:
passing_vector_of_string_or_passing_2d_array.cpp:19:33: error: ‘arr’ was not declared in this scope
for(int i=0;i<n;i++){ cout<<arr[i]<<endl;}
^
passing_vector_of_string_or_passing_2d_array.cpp: In function ‘int main()’:
passing_vector_of_string_or_passing_2d_array.cpp:40:25: error: cannot convert ‘const char**’ to ‘const char*’ for argument ‘1’ to ‘void PrintStringArray(const char*)’
PrintStringArray(arr);

最佳答案

const char *arr[n]

这不是一个有效的声明(除非 n 是一个常量表达式)。 C++ 没有变长数组。

“但它在 main 中对我有用!”

那是因为 g++ 实现了对 C++ 的扩展。此扩展似乎与 C 可变长度数组不兼容,并且通常存在错误。不要使用它。

“但是我怎样才能拥有类似的功能呢?”

使用std::vector。不要使用指针、new[]delete[],除非您非常清楚为什么需要这些低级原语。

关于c++ - 将二维数组和字符串 vector 作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33463448/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com