首页 > 解决方案 > cin std::string 带空格

问题描述

我想读取一个std::string命名destination的 fromstd::cin直到给定的分隔符。默认情况下,std::istream::operator<<当我这样做时,会在空格后中断destination << std::cin。如果destinationchar[],我可以使用std::getline.

我们用来做什么std::string?

标签: c++stringinputstreamcin

解决方案


你的前提是错误的: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在阅读之前检查'return destinationgetline返回一个引用,如果流处于正确状态std::cin,则可以将其转换bool为其值:true

if (std::getline(std::cin, destination, '|') == false) {
    // error handling
}

推荐阅读