如何在c ++中声明数组字符串

时间:2010-10-13 18:22:58

标签: c++ arrays char

这是非常基本的,但是:

我想要一个包含4个字符的字符串:“abcd”

我该怎样声明一个新的字符串呢?

char *newStr = new char[4]; // or -> char newStr[4];

strcpy(newStr, "abcd");

null'\ 0'字符必须是字符串的大小,所以new char [5]?

7 个答案:

答案 0 :(得分:4)

是的,\ 0字符是字符串的一部分,你也必须为它分配内存

答案 1 :(得分:4)

是的,终止空字符是字符串的一部分。所以你需要为5字符分配空间:

char *newStr = new char[5];
strcpy(newStr, "abcd");

完成后使用它时,不要忘记释放动态分配内存:

delete[] newStr;

或者您也可以这样做:

char newStr[] = "abcd";

在C ++中,最好使用string class来表示字符串:

string newStr = "abcd";

答案 2 :(得分:3)

C中没有“new”,但仅限于C ++。

你可以:

char* string = "abc";

char string[] = "abc";

char* string = (char*) malloc(sizeof(char) * 4);
strcpy(string, "abc");
string[3]='\0';
/* remember to free the used memory */

char string[] = { 'a', 'b', 'c', '\0' };

答案 3 :(得分:1)

这应该为你做脏事:

char newString[] = "abcd";

另外,是的,你需要新的char [5];

答案 4 :(得分:1)

如果这是C ++(似乎重新标记了我读过的内容),那么

是错误的
std::string my_string = "abcd"; 

这不是你想要的吗?我可能会遗漏一些东西。

答案 5 :(得分:0)

如果是字符串文字,您可以执行以下任一操作:

char *string = "abcd";
char astring[] = "abcd";

如果你想知道这最终复制字符串,你可以有一个缓冲区,或者分配内存,并且'/ 0'的空间是必要的,即使strlen("abcd")将返回4,因为它不计算终结者。

/* buffer way */
char string[5];
strcpy(string, "abcd");

/* allocating memory */
// char *ptr = malloc(5*sizeof(*ptr)); // question was retagged C++
char *ptr = static_cast<char*>(malloc(5*sizeof(*ptr));
strcpy(ptr,"abcd");
/* more stuff */
free(ptr);

由于此问题已重新贴现于C ++,您还可以使用newdelete

/* using C++ new and delete */
char *ptr = new char[5]; // allocate a block of 5 * sizeof(char)
strcpy(ptr, "abcd");
// do stuff
delete [] ptr; // delete [] is necessary because new[] was used

或者您也可以使用std::string

答案 6 :(得分:0)

/ -------------------字符串构造函数----------------

string emp("");              // constructs the "empty string"
string emp2;                 // constructs another "empty string"
string spc(" ");             // constructs string containing " "
string sstr("Some string");  // string containing "Some string"
char frob[] = "Frobnitz";
string sfrob(frob);          // constructs a C++ string containing
                             //   "Frobnitz" from a C-style string
string bar = "foobar";       // string containing "foobar"

// ------------------- stdout, c_str() --------------------

来源:http://www-cs-students.stanford.edu/~sjac/c-to-cpp-info/string-class