这是非常基本的,但是:
我想要一个包含4个字符的字符串:“abcd”
我该怎样声明一个新的字符串呢?
char *newStr = new char[4]; // or -> char newStr[4];
strcpy(newStr, "abcd");
null'\ 0'字符必须是字符串的大小,所以new char [5]?
答案 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 ++,您还可以使用new
和delete
。
/* 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