char *name="Siva",*str;
for(int i=0;i<strlen(name);i++)
{
str[i]=name[i];
}
str
是一个指针,但它还没有指向任何东西。
由于您使用的是 C++,因此您应该使用std::string
:
#include<iostream>
#include <string>
using namespace std;
int main()
{
char *name="Siva";
std::string str;
for(int i=0;i<strlen(name);i++)
{
str += name[i];
}
cout<<str;
return 0;
}
更好的是,摆脱手写循环:
#include <algorithm>
int main()
{
char *name="Siva";
std::string str;
std::copy (name, name + strlen (name), std::back_inserter (str));
cout<<str;
return 0;
}
更好的是,在这个特定的示例中,您根本没有理由需要这样做:
char* name = "Silva";
std::string str = name;
cout << str;
顺便说一句,C++ 中的字符串文字本质上是const
:
const char* name = "Silva";
如果你真的必须使用 a char*
,首先我会强烈质疑为什么,然后我会告诉你这样做:
int main()
{
const char *name="Siva";
char* str = new char [strlen (name)+1]; // +1 for the null terminator
strcpy (name, str);
cout << str;
delete [] str;
return 0;
}
我会更强烈地质疑您是否需要逐字节复制它:
int main()
{
const char *name="Siva";
char* str = new char [strlen (name)+1]; // +1 for the null terminator
for (size_t i = 0; i < strlen (name); ++i )
str [i] = name [i];
str [strlen (name)] = '\0';
cout << str;
delete [] str;
return 0;
}