首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++字符串输入

C++字符串输入
EN

Stack Overflow用户
提问于 2014-03-28 17:08:02
回答 4查看 3.4K关注 0票数 1

我的书上说,如果我想读一个最长为40个字符的字符串,我必须声明一个长度为41的变量,但它没有说明原因。

代码语言:javascript
复制
char name[41];
cin >> name;
cout << name << endl;

我知道这是一个新手问题,事实上我是一个C++新手。

我希望你能帮助我。谢谢。

编辑:

谢谢你的回答,我没想到在这么短的时间内会有这么多的好消息。

  1. 谁负责在char数组的末尾插入空终止符?
  2. 在我按回车后,"\n“会发生什么?

再次感谢。

EN

回答 4

Stack Overflow用户

发布于 2014-03-28 17:11:59

使用std::stringcin读取。然后,您不需要事先知道缓冲区需要有多大。

代码语言:javascript
复制
std::string input;
cin >> input;
cout << intput;

如果您需要一个C样式的数组,您可以:

代码语言:javascript
复制
const char* cstyle = input.c_str();

如果使用C样式字符串,则最后一个字符始终为空终止符'\0',用于指示字符串的结尾。这一点很重要,以了解您的字符序列结束。

一些例子:

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2014-03-28 17:17:27

在C++中声明字符串有两种方法:

代码语言:javascript
复制
char name[41];

代码语言:javascript
复制
string name;

它们之间的一个主要区别是,字符数组的末尾总是有一个\0字符来表示它的结束,因此需要一个额外的单元格。使用string会更方便,因为您不必关心字符串的长度。(您还可以使用string库中的许多内置函数)

看看这个:字符串和char[]类型在C++中的区别

票数 1
EN

Stack Overflow用户

发布于 2014-03-28 17:12:39

答案是存储在字符数组(原始字符串)中的字符串以空字符 ('\0')结束。此控制字符指示字符串的结束。此终止符非常有用,因为字符串的长度不需要显式存储。它也很有用,因为可以容纳数组的任意长度的字符串都是允许的。在这种情况下,为字符串的末尾设置一个标记是有用的。这个问题对于进一步理解这个主题应该是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22719116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档