我想从std::string
读取名为destination
的{{1}},直到给定的分隔符为止。默认情况下,当我执行std::cin
时,std::istream::operator<<
会在空格后中断。如果destination << std::cin
是destination
,我可以使用char[]
。
我们对std::getline
答案 0 :(得分:4)
您的前提是错误的: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, '|');
('|'
作为例子分隔符)
注意:在阅读getline
之前,您应该先检查destination
的回复。 getline
会返回对std::cin
的引用,如果流处于正确状态,则可以将其转换为bool
,其值为true
:
if (std::getline(std::cin, destination, '|') == false) {
// error handling
}
答案 1 :(得分:0)
使用std::getline
,如下所示:
std::string InputWithSpaces;
std::getline (std::cin,InputWithSpaces);
std::cout << InputWithSpaces << std::endl; //test 1 2 3