#include< iostream >
#include< sstream >
#include< string.h >
using namespace std;
int main()
{
string s = "hello this is vit university i love chocolates";
istringstream iss(s);
string temp;
char* coll;
int i = 0;
while (iss >> temp)
{
cout << temp << endl;//(char *)temp.c_str();
strcpy(coll, "something here");
//i++;
//cout<<(char *)temp.c_str()<<endl;
}
return 0;
}
代码错误,strcpy(coll,“sldjs”);退出代码,这里有什么问题?
答案 0 :(得分:1)
char* coll;
这是一个未初始化的指针,它没有指向有效的内存。
strcpy(coll,"something here");
通过指针复制字符串,给出未定义的行为;通常,保护错误或随机内存损坏。
如果你真的想搞乱C库,那么你需要一个缓冲区来写入:
char coll[SOME_SIZE_YOU_HOPE_IS_BIG_ENOUGH];
或者您可以坚持使用C ++库,它将为您管理内存:
std::string coll;
coll = "something here";
答案 1 :(得分:0)
你需要在你要复制“某事”的地方分配内存。 更改此代码段
char* coll;
int i = 0;
while (iss >> temp)
{
cout << temp << endl;//(char *)temp.c_str();
strcpy(coll, "something here");
//i++;
//cout<<(char *)temp.c_str()<<endl;
}
到
int i = 0;
while (iss >> temp)
{
cout << temp << endl;//(char *)temp.c_str();
char* coll = new char[strlen( "something here" ) + 1];
strcpy(coll, "something here");
//i++;
//cout<<(char *)temp.c_str()<<endl;
delete []coll;
}
还要考虑到正确指定的标题是
#include< iostream >
#include< sstream >
#include< string >
#include< cstring >