代码之家  ›  专栏  ›  技术社区  ›  Aaron

向量<string>或向量<char*>?

  •  4
  • Aaron  · 技术社区  · 17 年前

    • 问题是什么 差别

      • vector<string> vector<char *> ?
    • 如何传递数据类型的值: string

      • const char * ?

    例子 :

     vector<string> args(argv, argv + argc);
    
     vector<string>::iterator i;
    
     void foo (const char *); //*i
    
    • 我理解使用

    编辑:

    谢谢你的意见!

    7 回复  |  直到 13 年前
        1
  •  17
  •   Stack Overflow is garbage    13 年前

    这实际上与向量无关。

    char*

    A. std::string 是一个字符串类,封装了组成字符串的所有必需数据,以及分配和解除分配功能。

    如果你去商店 字符串 在向量中,或者在其他任何地方,那么一切都会发生 只是工作

    如果存储char指针,则必须完成分配和释放内存的所有艰苦工作,确保指针只指向有意义的字符串数据,并确定字符串的长度等等。

    许多C API的预期,以及C++标准库的一部分, string 班上有 c_str() 返回 煤焦*

        2
  •  3
  •   bluish dmajkic    13 年前

    char* 实际上是指向类型为的值的指针 char int* number number 引用指向存储此值的内存块的指针,并假定它是 int 烧焦 'C' 烧焦 .

        3
  •  3
  •   bluish dmajkic    13 年前

    string const char * ,使用 一串 c_str() 成员,返回以null结尾的字符串:

    string s = "foobar";
    
    int n = strlen( s.c_str() );
    
        4
  •  1
  •   unwesen unwesen    17 年前
    foo(i->c_str());
    
        5
  •  1
  •   bluish dmajkic    13 年前

    我会用 vector< string > ,这只是因为查找将基于值而不是基于地址。然而 vector< char* >

        6
  •  1
  •   bluish dmajkic    13 年前

    从…起 http://www.cplusplus.com/reference/string/string/ :

    字符串对象是一种特殊类型的 容器,专门设计用于

    不同于传统的c字符串 仅仅是一系列的字符 在一个文件中使用字符串进行操作的功能 更直观的方式和一些 通用于 C++容器。

    char* 是指向字符的指针,仅此而已。

    你可以使用 c_str() const char* .

        7
  •  0
  •   Bing    13 年前

    vector<char *> 听起来是个坏主意!!除非您的程序在内存有限的系统中运行。