C ++编程语言对我有帮助吗?

时间:2014-03-05 17:28:38

标签: c++

#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”);退出代码,这里有什么问题?

2 个答案:

答案 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 >