c++ - cin std::string 带空格

标签 c++ string inputstream cin

<分区>

我想阅读 std::string名为 destination来自 std::cin直到给定的分隔符。默认情况下,std::istream::operator<<当我做 destination << std::cin 时在空格后中断.如果destinationchar[] , 我可以使用 std::getline .

我们用什么来std::string?

最佳答案

你的前提是错误的:std::getlinestd::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 的引用,如果流处于正确状态:

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

关于c++ - cin std::string 带空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50367830/

相关文章:

C++ STL Map vs Vector 速度

Java contains() 方法无法正常工作

inputstream - Linux 设备驱动程序调用时计数错误

java - 在 Android 中解析 XML 流

c++ - 为什么需要强制转换为 bool 值?

c++ - 如何在 msvc 2010 上运行 C 项目

c++ - 具有抽象继承的后缀运算符++

ruby - 为什么 Str[fix_num] 产生错误的结果

javascript - 无法将对象值从 javascript 传递到 Controller

java - 通过流有效发送字节[]