Bootstrap

c++的string转char*遇到的指针问题

博主最近遇到一个bug,调试了一整天才发现问题所在,给小伙伴们分享下心得。这个bug引起的原因是因为指针指向同一个地方,所导致的问题。

错误修改前的使用

	std::vector<char*> data;
	std::vector<std::string> result;
	result.push_back("123");
	result.push_back("456");
	result.push_back("789");
	 for(std::vector<std::string>::iterator it = result.begin();
            it != result.end(); it++)
        {
            char*  val = (char *)(*it).c_str();
            data->push_back(val);
        }

这个地方将string转为char*会出现值可以改变,但有个问题会出现,修改指针中某一个值就会发生所有值都会发生变化。

如修改data[1] = “456789”;
data[0],data[1],data[2] 都会改为同一个值,这个地方的原因是因为,char*类型不能直接等于某个值,直接等于会把指针赋值。这样就会引起data[0]=“123”,&data[0] = “pffff001”,data[1]=“456”,&data[1]=“pffff001”,,data[2]=“7

;