我对 C++ 中的字符串有疑问
我想从用户 22 字符中读取并将它们存储在字符串中
我试过了:
std::string name;
std::cin.getline(name,23);
它显示一个错误。
将 cin.getline 与字符串一起使用的解决方案是什么?
你使用std::getline(std::istream&, std::string&)
from<string>
代替。
如果您想将内容限制为 22 个字符,您可以std::string
像将其传递给任何 C 样式 API 一样使用:
std::string example;
example.resize(22); // Ensure the string has 22 slots
stream.getline(&example[0], 22); // Pass a pointer to the string's first char
example.resize(stream.gcount()); // Shrink the string to the actual read size.
有两种不同的getline
功能。一个是istream类的成员,大致是这样的:
std::istream &std::istream::getline(char *buffer, size_t buffer_size);
另一个是自由函数,如下所示:
std::istream &std::getline(std::istream &, std::string &);
你试图打电话给前者,但真的想要后者。
虽然我不相信前者被正式弃用,但我怀疑大多数真正跟上他们的“游戏”的 C++ 程序员会考虑这种方式——为了向后兼容性,它可能无法删除,但机会相当大你永远不应该使用它。
此代码读取 22 个字符并将它们放入一个字符串中。
char buf[22];
cin.read(buf, 22);
string str(buf, 22);
如果这确实是您想要的,那么这就是代码。