首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么cin在包含字符串头后接受字符串输入?

问为什么cin在包含字符串头后接受字符串输入?
EN

Stack Overflow用户
提问于 2018-06-13 18:00:25
回答 2查看 112关注 0票数 1

我对C++编程很陌生。我试图获取用户输入,并将它们放入变量中,然后使用cin。它适用于整数和其他的,但strings除外。所以,当我四处搜索时,我发现我必须包括<string>头。我只想了解,包含字符串头发生了哪些更改?我认为cin是由字符串头中定义的函数重载的。因此,我开始查看string头,无法找到重载的cin或在其中定义的任何函数。有谁能告诉我cin是如何在包含<string>之后开始接受字符串输入的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-13 18:07:51

defines the functions

代码语言:javascript
复制
template <class CharT, class Traits, class Allocator>
std::basic_ostream<CharT, Traits>& 
    operator<<(std::basic_ostream<CharT, Traits>& os, 
               const std::basic_string<CharT, Traits, Allocator>& str);

template <class CharT, class Traits, class Allocator>
std::basic_istream<CharT, Traits>& 
    operator>>(std::basic_istream<CharT, Traits>& is, 
               std::basic_string<CharT, Traits, Allocator>& str);

这些免费的标准库函数允许您将std::string与来自basic_ostream或basic_istream的任何流一起使用。

票数 5
EN

Stack Overflow用户

发布于 2018-06-13 18:08:09

<string>头主要定义标准库的std::string类。没有它,C++中就没有字符串类:它不是语言的组成部分。当然,您可以使用char*-strings,C风格,但这不是我们通常在C++中所做的事情。

除了std::string,标头还为std::string和流定义了>>和<<运算符,这样您就可以执行std::cout << my_string和std::cin >> another_string这样的操作,这种语法相当于operator<<(std::cout, my_string)和operator>>(std::cin, another_string)。

重要注意: C语言的<string.h>头与C++的<string>完全不同。C语言头和C语言一样是可用的,定义了 (null-terminated) strings。不要混淆这两个标题,也不要混淆这两种“字符串”。

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

https://stackoverflow.com/questions/50843514

复制
相关文章

相似问题

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