<分区>
我想阅读 std::string
名为 destination
来自 std::cin
直到给定的分隔符。默认情况下,std::istream::operator<<
当我做 destination << std::cin
时在空格后中断.如果destination
是char[]
, 我可以使用 std::getline
.
我们用什么来std::string?
标签 c++ string inputstream cin
<分区>
我想阅读 std::string
名为 destination
来自 std::cin
直到给定的分隔符。默认情况下,std::istream::operator<<
当我做 destination << std::cin
时在空格后中断.如果destination
是char[]
, 我可以使用 std::getline
.
我们用什么来std::string?
最佳答案
你的前提是错误的:std::getline
与 std::string
一起工作:
template< class CharT, class Traits, class Allocator >
std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input,
std::basic_string<CharT,Traits,Allocator>& str,
CharT delim );
这意味着您可以从 std::cin
读取到 std::string
直到给定的分隔符:
std::string destination;
std::getline(std::cin, destination, '|');
('|'
作为示例分隔符)
注意:您应该在从destination
读取之前检查getline
的返回。 getline
返回对 std::cin
的引用,如果流处于正确状态:
if (std::getline(std::cin, destination, '|') == false) {
// error handling
}
关于c++ - cin std::string 带空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50367830/