我对c ++中的字符串有疑问
我想从用户22字符中读取并将它们存储在字符串
中我试过了:
std::string name;
std::cin.getline(name,23);
它显示错误。
将cin.getline与字符串一起使用的解决方案是什么?
答案 0 :(得分:6)
您使用<string>
中的std::getline(std::istream&, std::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.
答案 1 :(得分:0)
有两种不同的getline
功能。一个是istream类的成员,大致如下:
std::istream &std::istream::getline(char *buffer, size_t buffer_size);
另一个是免费功能,如下所示:
std::istream &std::getline(std::istream &, std::string &);
你试图打电话给前者,但真的想要后者。
虽然我不相信前者已被正式弃用,但我怀疑大多数真正跟上他们“游戏”的C ++程序员会考虑这种方式 - 为了向后兼容它可能无法删除,但机会很多非常好,你永远不应该使用它。
答案 2 :(得分:0)
此代码读取22个字符并将它们放在一个字符串中。
char buf[22];
cin.read(buf, 22);
string str(buf, 22);
如果这真的是你想要的那么这就是代码。