CIN 标准::带空格的字符串

cin std::string with spaces

本文关键字:字符串 空格 标准 CIN      更新时间:2023-10-16

我想从std::cin读取名为destinationstd::string,直到给定的分隔符。默认情况下,当我执行destination << std::cin时,std::istream::operator<<会在空格后中断。如果destinationchar[],我可以使用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的引用,如果流处于正确的状态,则可以将其转换为值为truebool

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

使用std::getline,像这样:

std::string InputWithSpaces;
std::getline (std::cin,InputWithSpaces);
std::cout << InputWithSpaces << std::endl; //test 1 2 3