问题:
- `vector<string>` and `vector<char *>`?
string的值传递给特定接受:的函数
- `const char *`?
对于实例,
vector<string> args(argv, argv + argc);
vector<string>::iterator i;
void foo (const char *); //*ivector<char *>:我必须复制数据以及指针编辑:
谢谢你的意见!
发布于 2009-02-15 00:22:45
这实际上与向量无关。
char*是一个指针,它可能指向或不指向有效的字符串数据。
std::string是一个string类,它封装组成字符串的所有所需数据,以及分配和取消分配功能。
如果您将std::string存储在向量中或其他任何地方,那么一切都会正常工作。
如果存储char指针,则必须完成分配和释放内存的所有艰苦工作,并确保指针仅指向有意义的字符串数据,并确定字符串的长度等等。
而且,由于许多C++以及char*标准库的一部分都期望使用string,所以string类具有返回char*的c_str()函数。
发布于 2009-02-15 00:20:11
若要将string传递给预期的const char *,请使用string的c_str()成员,该成员返回以空结尾的字符串:
string s = "foobar";
int n = strlen( s.c_str() );发布于 2010-12-21 07:48:59
char*实际上是一个指向char类型值的指针,它定义了可以和不能用该值完成的操作。您可以让一个int* number和number引用指向存储此值的内存块的指针,并假设它是一个int,并为该内存块锁定该类型。但是您可以在该内存块中存储一个char 'C',但是它会引发编译错误,因为它说您不能在该char上执行那些int函数。
https://stackoverflow.com/questions/550035
复制相似问题