cin std::string 带空格

Edu*_*yan 1 c++ string inputstream cin

我想从给定的分隔符读取std::string命名。默认情况下,当我执行. 如果是,我可以使用.destinationstd::cinstd::istream::operator<<destination << std::cindestinationchar[]std::getline

我们有什么用 std::string?

YSC*_*YSC 6

你的前提是错误的: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 );
Run Code Online (Sandbox Code Playgroud)

这意味着您可以从std::cinstd::string定的分隔符读取到直到:

std::string destination;
std::getline(std::cin, destination, '|');
Run Code Online (Sandbox Code Playgroud)

'|'作为示例分隔符)


注意:您应该getline在阅读之前检查返回destinationgetline返回一个引用,如果流处于正确状态std::cin,则可以将其转换bool为其值true

if (std::getline(std::cin, destination, '|') == false) {
    // error handling
}
Run Code Online (Sandbox Code Playgroud)