1,当出现link到.exe文件的失败的时候,基本上是因为进程尚未关闭的问题,可以等一下继续编译,或者在任务管理器关闭进程。
2,atoi()函数是将char*(即string.c_str()这样的)的字符串转化为int,但是只能转化十进制的。遇到十六进制的字符串如“FE”,就会失败,结果输出0.
3,承上,将十六进制的字符串转化为int,要用strtol()函数。如ab = strtol(oneModuleinfo->vecDatastream[ii].vecDataStreamChoice[ss].strVal.c_str(),NULL,10);
bb = strtol(oneModuleinfo->vecDatastream[ii].strMaskChange.c_str(),NULL,16);,其中第三个参数是进制。
4,将容器vector的对象重置为零,即达到memset的效果,可以用clear()函数。
5,将容器中的元素去重。sort(myvalue1.begin(),myvalue1.end());
myvalue1.erase(unique(myvalue1.begin(),myvalue1.end()),myvalue1.end());//去重;
其中,myvalue1是一个vector容器。sort()函数排序,unique()函数用来将重复的元素放于vector后面,然后再用erase()函数抹除重复的元素。
6,容器为空的时候,尝试读取容器的元素的时候会报错,此时要先一步判断容器是否为空,采用size()函数就可以了。
7,
void SplitString(const std::string& s, const std::string& c, std::vectorstd::string& v)
{
std::string::size_type pos1, pos2;
pos2 = s.find(c);
pos1 = 0;
while(std::string::npos != pos2)
{
v.push_back(s.substr(pos1, pos2-pos1));
pos1 = pos2 + c.size();
pos2 = s.find(c, pos1);
}
if(pos1 != s.length())
v.push_back(s.substr(pos1));
return;
}
split函数的c++实现。
8,substr()函数的第二个参数可以省略,此时默认字符串结尾。