c++ - 如何使用 istream_iterator 从 ifstream 中读取带空格的字符串?
问题描述
我想使用 逐行读取文本文件,istream_iterator
但是当行中有空格时它会失败。
这是一个示例代码:
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <string>
int main(int argc, char** argv)
{
if (argc != 2) {
std::cout << argv[0] << " <file-name>" << std::endl;
return 10;
}
std::ifstream _in(argv[1]);
if (!_in.good()) {
std::cout << "error reading " << argv[1] << std::endl;
return 20;
}
_in.unsetf(std::ios_base::skipws);
std::istream_iterator<std::string> _ite(_in);
std::istream_iterator<std::string> _end;
std::string _s(*_ite);
std::cout << "line read " << _s << std::endl;
}
例如,在这个输入文件中:
1;3.14;bla bla
-3;0.923;let me go
读取的第一个字符串是1;3.14;bla
有没有办法做到这一点,还是我应该放弃并使用getline
?
解决方案
推荐阅读
- azure - 获取 Azure 密钥保管库证书仅适用于本地计算机
- jsf - 在支持 bean 中捕获最后呈现的响应和访问
- sql-server - 将表达式转换为数据类型 int 的算术溢出错误,即使它是 BigInt
- python - 使用 python 和 selenium 自动单击按钮
- javascript - 是否可以通过 chrome 扩展设置自动填充表单数据?
- remote-server - 获取远程服务器上运行的 COM+ 服务列表?
- python-3.x - Python OR Logic 给出 Series 的真值是模棱两可的错误
- mysql - 在 MYSQL 中使用 AVG() 更新多列
- ios - 是否可以在没有用户登录 Flutter 应用程序的情况下存储数据?
- swift - HTML 字符串在 MAC Catalyst 中不起作用