C++ C++;stringstream到char*转换内存分配
有人能解释一下下面的代码是如何工作的吗?不会使应用程序崩溃吗C++ C++;stringstream到char*转换内存分配,c++,arrays,memory-management,stringstream,istringstream,C++,Arrays,Memory Management,Stringstream,Istringstream,有人能解释一下下面的代码是如何工作的吗?不会使应用程序崩溃吗 int main() { char *tempStr = new char[5]; tempStr[0] = '\0'; string stemp = "helloworld"; stringstream sstream; sstream.str(stemp); cout << "len before = " << strlen(tempStr); sst
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;
}
stringstream
是否为字符指针中的额外字符分配内存李>
stringstream
复制到char*数组而不超过为char*
分配的内存的正确方法吗char
数组空间不足,则必须重新分配该数组。在C++中,手工操作很少有意义。只要使用std::string
就可以了char
数组空间不足,则必须重新分配该数组。在C++中,手工操作很少有意义。只要使用std::string
就可以了char*
不是一个好主意。使用std::string
从流中读取输入。但是如果你仍然想为了知识而知道,那就用吧
顺便说一下,您可以合并这两行:
stringstream sstream;
sstream.str(stemp);
合二为一:
stringstream sstream(stemp);
或者简单地说:
stringstream sstream("helloworld"); //no need of stemp!
希望有帮助
stringstream是否为字符指针中的额外字符分配了内存
否。您的代码调用未定义的行为
还想知道在不超过为char*分配的内存的情况下,将数据从stringstream复制到char*数组的正确方法吗
阅读char*
不是一个好主意。使用std::string
从流中读取输入。但是如果你仍然想为了知识而知道,那就用吧
顺便说一下,您可以合并这两行:
stringstream sstream;
sstream.str(stemp);
合二为一:
stringstream sstream(stemp);
或者简单地说:
stringstream sstream("helloworld"); //no need of stemp!
希望对您有所帮助。我们也可以做
sstream是的,因为它是stringstream
,同时用于输入和输出。我有一个要求,不能使用string。因此,唯一的方法是使用istream::read
并指定字符数组的最大长度。谢谢。事实上,我正在用>运算符在宏
中阅读整数
和字符*
数据类型。对于integer
和char*
@N3Xg3N,有没有一种方法可以在不做任何改变的情况下仍然这样做?这里的宏是什么?在ideone.com或pastebin.com上发布您的代码我们也可以做sstream是的,因为它是stringstream
,用于输入和输出。我有一个要求,不能使用字符串。因此,唯一的方法是使用istream::read
并指定字符数组的最大长度。谢谢。事实上,我正在用>运算符在宏
中阅读整数
和字符*
数据类型。对于integer
和char*
@N3Xg3N,有没有一种方法可以在不做任何改变的情况下仍然这样做?这里的宏是什么?在ideone.com或pastebin.com上发布您的代码