我的书上说,如果我想读一个最长为40个字符的字符串,我必须声明一个长度为41的变量,但它没有说明原因。
char name[41];
cin >> name;
cout << name << endl;我知道这是一个新手问题,事实上我是一个C++新手。
我希望你能帮助我。谢谢。
编辑:
谢谢你的回答,我没想到在这么短的时间内会有这么多的好消息。
再次感谢。
发布于 2014-03-28 17:11:59
使用std::string从cin读取。然后,您不需要事先知道缓冲区需要有多大。
std::string input;
cin >> input;
cout << intput;如果您需要一个C样式的数组,您可以:
const char* cstyle = input.c_str();如果使用C样式字符串,则最后一个字符始终为空终止符'\0',用于指示字符串的结尾。这一点很重要,以了解您的字符序列结束。
一些例子:
char* text = "hello"; // the compiler puts an extra '\0' at the end
std::string str("hello"); // does not have a null terminator! (before C++11)
str.c_str(); // this returns "hello\0" with a null terminator发布于 2014-03-28 17:17:27
在C++中声明字符串有两种方法:
char name[41];或
string name;它们之间的一个主要区别是,字符数组的末尾总是有一个\0字符来表示它的结束,因此需要一个额外的单元格。使用string会更方便,因为您不必关心字符串的长度。(您还可以使用string库中的许多内置函数)
看看这个:字符串和char[]类型在C++中的区别
发布于 2014-03-28 17:12:39
答案是存储在字符数组(原始字符串)中的字符串以空字符 ('\0')结束。此控制字符指示字符串的结束。此终止符非常有用,因为字符串的长度不需要显式存储。它也很有用,因为可以容纳数组的任意长度的字符串都是允许的。在这种情况下,为字符串的末尾设置一个标记是有用的。这个问题对于进一步理解这个主题应该是有用的。
https://stackoverflow.com/questions/22719116
复制相似问题