gpt4 book ai didi

c++ - 如何使用 istream_iterator 从 ifstream 读取带空格的字符串?

转载 作者:行者123 更新时间:2023-11-28 01:18:59 27 4
gpt4 key购买 nike

我想使用 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;让我走

读取的第一个字符串是1;3.14;bla

有没有办法做到这一点,还是我应该放弃并使用 getline

最佳答案

std::string被读取它读取直到找到第一个空格字符。符合空格字符条件的内容由流的 std::locale 定义。 ,更准确地说是 std::ctype<char>方面。您可以创建一个 std::ctype<char>仅考虑 ’\n’ 的方面作为空间,创建一个 std::locale包含该方面的对象,imbue()具有相应 std::locale 的流它应该有效。

关于c++ - 如何使用 istream_iterator 从 ifstream 读取带空格的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57503906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com