c++ - cin std::string 带空格
问题描述
我想读取一个std::string
命名destination
的 fromstd::cin
直到给定的分隔符。默认情况下,std::istream::operator<<
当我这样做时,会在空格后中断destination << std::cin
。如果destination
是char[]
,我可以使用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, '|');
('|'
作为示例分隔符)
注意:你应该getline
在阅读之前检查'return destination
。getline
返回一个引用,如果流处于正确状态std::cin
,则可以将其转换bool
为其值:true
if (std::getline(std::cin, destination, '|') == false) {
// error handling
}
推荐阅读
- json - 使用 shell 脚本在 JSON 和 CSV 中查找特定值
- r - R写入二进制数据
- android - 不同片段中的相同数据绑定布局
- python - 以下 Pytorch 结果背后的解释
- python - 如何在 django 中克隆数百万个数据库模型副本
- java - 如何使用 gradle 为 servlet 创建 MANIFEST.MF 文件?
- python - 标头没有带有“传输编码”的“内容长度”:“分块”
- java - 使用Apache POI将多种数据类型数据从excel发送到Testng Dataprovider的最佳方法是什么
- java - DatePicker setMinDate 仅在第一次工作
- java - JAVA中未知数的平均值