如何为char **类型变量赋予适当的值,以便可以将其赋值给字符串变量?

时间:2018-03-07 06:39:24

标签: c++ string char

我有两个变量:

char** A;
std::string B;

这样的作业发生在代码的某处:

B = A[0];

我应该如何给A赋值,以便正确地进行赋值。

我试过了:

char* A_ = NULL;
A_ = (char*)"abcd";
A = &A_

如果稍后进行分配,我会收到如下错误:

Invalid read of size 8.

请帮助解决此问题。感谢。

3 个答案:

答案 0 :(得分:1)

没有A可能符合您要求的单一作业,因为有两项必要的作业;

  1. 初始化A,使其值为有效char *
  2. 的地址
  3. 初始化char *以指向包含nul终止字符串的char数组的(第一个字符)。
  4. 例如,假设B是静态的

    std::string B;
    
    void some_func()
    {
        char some_thing[] = "abcdefg";
    
        char *p = some_thing;       // same effect as A[0] = some_thing or as *a = some_thing
    
        char **A = &p;
    
        B = A[0];    // note the assignment COPIES some_thing
    
        //   p and some_thing both cease to exist as function returns
        //     that is OK as B contains a copy of some_string
    }
    

    请注意,我已根据您的要求仔细构建了此功能。但是,您要做的是容易出错(例如,很容易以导致未定义行为的方式滥用任何指针),因此在C ++中通常被认为是不好的做法。

答案 1 :(得分:0)

我认为直接访问char **到A [0]是不可能的,因为它不是2维,下面你可以试试

 char **str = NULL;
    char *st = NULL;
    st = "Hello";
    str = &st;
    printf(" %s ", *str);

    st = "World";

    printf(" %s ", *str);

答案 2 :(得分:-1)

使用单个指针。双指针类似于2d数组。

char* A;
std::string B;
A = (char*)&("abcd");

B  = A;