【问题标题】:C++ Strange Results of String Range Constructor字符串范围构造函数的 C++ 奇怪结果
【发布时间】:2021-11-18 17:36:56
【问题描述】:

我有一些类似的代码:

std::istringstream iss{"SomeChars"};
// Some read ops here (though the problem stays even without them)
std::string reconst(iss.str().cbegin(), iss.str().cbegin() + iss.tellg());
std::cout << reconst << std::endl;

结果总是一些乱码。 Here 是一个演示这个的程序。

当我将iss.str() 存储在std::string_viewstd::string 中时,该程序有效。但是,我仍然有我的问题:

问题:

  • 为什么程序会这样?
  • 我看不出它会如何被这样解释,但这是最令人头疼的解析吗?

【问题讨论】:

    标签: c++ constructor range istringstream


    【解决方案1】:

    str 函数按值返回字符串。这意味着对str 的每次调用都会为您提供一个新的字符串对象,并且您的迭代器指向那些临时字符串,而不是作为字符串流缓冲区的字符串。这行不通,因为迭代器需要指向同一个对象,而不是具有相同值的不同对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      相关资源
      最近更新 更多