Xcode中的C ++字符串

问题描述 投票:1回答:1

我目前正在Xcode上编写一个C ++程序。以下是我正在运行的代码的片段:

char myString[3];
cin >> myString;
cout << myString << endl;

代码非常简单。但是,当我输入长度超过2个字符的字符串时,字符串仍然接受它们。为什么字符串只存储两个字符加上空终止符?

谢谢!

c++ string xcode
1个回答
2
投票

因为它不能。当您通过值将数组传递给函数(operator>>计数!)时,您实际上只是将指针传递给数组。 char*不知道它指向的缓冲区的大小。

从理论上讲,可以设计标准库,使其具有一个参考数组的函数模板,如:

template <size_t N>
operator>>(char (&input)[N]);

但是,它确实没有。您可以建议将其添加到C ++标准委员会中。

无论如何,这里不需要格式化提取。喜欢这样的东西:

cin.read(&myString[0], sizeof(myString)-1);

...或使用实际的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.