微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C ++中,默认情况下,istringstreams或stringstreams通常初始化为什么?

如何解决在C ++中,默认情况下,istringstreams或stringstreams通常初始化为什么?

我有一个如下类,并且它具有istringstream类型的成员。在类的构造函数中,istringstream类型extracted_text可以初始化为什么?

class user_input
{
std::string input_text;
std::istringstream extracted_text;

public:
user_input()
{
input_text="NULL";
// want to kNow what to initialize extracted_text with here
}
}

解决方法

// want to know what to initialize extracted_text with here

您不能在此处执行此操作。类成员在构造函数体执行之前被初始化。如果要初始化成员,则需要在构造器运行之前执行该操作。

istringstream类型的extract_text可以初始化为什么?

在这里您可以找到一个构造函数列表,选择一个:std::basic_istringstream::basic_istringstream。例如,您可以使用列表上的std::string,(3)对其进行初始化:

使用str的副本作为基础字符串设备的初始内容。底层basic_stringbuf对象构造为basic_stringbuf (str,mode | std :: ios_base :: in)。

class user_input
{
    std::string input_text;
    std::istringstream extracted_text;

    public:
    user_input() : input_text("NULL"),extracted_text("hello world")
                // ^^ member initializer list
    {
    }
};

在C ++中,默认情况下,istringstreams或stringstreams通常会初始化为什么?

默认构造函数(相同的链接):

默认构造函数。使用默认的打开模式构造新的基础字符串设备

如果这是您想要的,则不必提供初始化程序。

详细了解构造函数和成员初始化列表here。我没有提及您可以阅读here的默认成员初始化程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。