先看一个例子:int lines, i; int left, right; <strong><u> string strleft,</u></strong> pNode tPointerArray[MaxNum]; pNode tPointer; bool flag[MaxNum] = {false}; cin >> lines; for ( i = 0; i < lines; i++ ) { tPointer = ( pNode )malloc( sizeof( tNode ) ); cin >> strleft >> strright; if ( strleft == "-" ) { left = -1; } else { <strong><u> left = atoi(strleft.c_str());</u></strong> flag[left] = true; }这段代码里left的值到底是什么意思,函数strleft.c_str();又是什么意思?今天查到《C++Primer》那么知道:string的函数c_str()是获取这个字符串的首指针,例如: string str = "1234";那么 char* pStr = str.c_str(); 中 pStr就是指向"1234"字串的首地址 '1' 。
atoi 函数是把字符串的数字转为数字型的数值,
例如:int n = atoi("1234");那么结果是n的数值就为1234。
strleft 是 string 字符串类型的对象,
那么string的函数c_str()是获取这个字符串的首指针,
例如: string str = "1234";那么 char* pStr = str.c_str(); 中 pStr就是指向"1234"字串的首地址 ‘1‘ 。
那么 left=atoi(strleft.c_str());就是把 strleft 这个字串(数字)转换为数值型并赋值给 left。
原文:http://blog.csdn.net/u013050857/article/details/43495339