誰能解釋一下下面的代碼是如何工作的,並不會不應用程序崩潰?C++字符串流爲char *轉換內存分配
int main() {
char *tempStr = new char[5];
tempStr[0] = '\0';
string stemp = "helloworld";
stringstream sstream;
sstream.str(stemp);
cout << "len before = " << strlen(tempStr);
sstream >> tempStr;
cout << "len after = " << strlen(tempStr) << endl;
cout << tempStr << endl;
delete[] tempStr;
return 1;
}
我得到的輸出作爲
len before = 0
len after = 10
helloworld
- 沒有
stringstream
在字符指針多餘的字符分配內存? - 也想知道正確的方式從
stringstream
複製數據到char *數組,不超過分配給char*
內存?
我們還可以做's stemp'嗎? – 0x499602D2
是的,因爲它是用於輸入和輸出的'stringstream'。 – Nawaz
我有一個要求,不能使用字符串。所以唯一的方法是使用'istream :: read'並指定char數組的最大長度。謝謝。 – N3Xg3N