cin std :: string with spaces

时间:2018-05-16 09:59:23

标签: c++ string inputstream cin

我想从std::string读取名为destination的{​​{1}},直到给定的分隔符为止。默认情况下,当我执行std::cin时,std::istream::operator<<会在空格后中断。如果destination << std::cindestination,我可以使用char[]

我们对std::getline

使用了什么?

2 个答案:

答案 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