我是C ++编程的新手。我试图接受用户输入并将它们放在变量中,我正在使用cin
。除了strings
之外,它适用于整数和其他的整数。所以,当我搜索时,我发现我必须包含<string>
标题。我只想了解,包含字符串标题会发生什么变化?我认为cin
被字符串标头中定义的函数重载。所以,我开始研究字符串标题,我找不到cin
重载或根本没有定义任何函数。任何人都可以告诉我在cin
包含<string>
之后x <- matrix(1:10, nrow = 5, ncol = 2)
x
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
如何开始接受字符串输入?
答案 0 :(得分:5)
<string>
defines the functions
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
的任何流一起使用。
答案 1 :(得分:1)
<string>
标题主要定义标准库的std::string
类。没有它,你在C ++中没有字符串类:它不是语言的组成部分。当然你可以使用char*
- 字符串,C风格,但这不是我们通常在C ++中做事的方式。
与std::string
一起,该标头还为>>
和流定义<<
和std::string
运算符,以便您可以执行{std::cout << my_string
之类的操作1}}和std::cin >> another_string
。该语法等同于operator<<(std::cout, my_string)
和operator>>(std::cin, another_string)
。
重要说明:C语言的<string.h>
标题与C ++的<string>
完全不同。 C语言标头可以像在C中一样使用,并定义certain functions working on char*
(null-terminated) strings。不要混淆两个标题,也不要混淆两种&#34;字符串&#34;。