vector <string>或vector <char*>?

Aar*_*ron 4 c++ string pointers char visual-studio-2008

题:

  • 有什么区别:

    • vector<string>vector<char *>
  • 我如何将数据类型的值传递string给一个特别接受的函数:

    • const char *

对于例如:

 vector<string> args(argv, argv + argc);

 vector<string>::iterator i;

 void foo (const char *); //*i
Run Code Online (Sandbox Code Playgroud)
  • 我理解使用vector<char *>:我将不得不复制数据,以及指针

编辑:

感谢您的投入!

jal*_*alf 17

这实际上与矢量没有任何关系.

A char*是指针,可以指向或不指向有效的字符串数据.

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

如果你将它存储std::string在矢量或其他任何地方,那么一切都会正常工作.

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

并且由于char*许多C API以及C++标准库的一部分都需要它,因此string该类具有c_str()返回a 的函数char*.