首页 > 解决方案 > 当我尝试在 c++ 中的 Visual Studio 中将字符串分配给 istringstream 对象时,为什么会出现错误?

问题描述

下面的类将string一行作为用户的输入。我的目标是将其存储在 中istringstream iss,然后从中提取各种数据istringstream iss到各种变量中。但是,当我尝试使用 初始化issstring user_input,我在编译文件时收到此错误:

错误 C2064:术语不计算为采用 1 个参数的函数

我认为问题出在iss{user_input};请解释我收到此错误的原因。

_input.h头文件

#pragma once

#include <string>
#include<sstream>
#include "_date.h"
#include "_time.h"

using namespace std;

//definition of class input
class _input
{
    string user_input;
    istringstream iss;

    //datamembers to be sent
    int esno,eday, emonth, eihours, eimins, eohours, eomins, emo;
    char eiap, eoap;
    string enotes;

public:
    _input();

    void get_input();
    void process_data();
};

_input.cpp 文件

#include "_input.h"

_input::_input() : user_input { "Nothing Entered" }, iss{ "" }, esno{ 0 }, eday{ 0 }, emonth{ 0 },
      eihours{ 0 }, eimins{ 0 }, eohours{ 0 }, eomins{ 0 }, emo{ 0 }, eiap{ 'n' }, eoap{ 'n' }, enotes{ "" }
{

}

void _input::get_input() // to store in iss
{
    cout << "Enter the entry : Format (Date - In Time - Out Time - Money Owed - Notes)" << endl;
    getline(cin, user_input);
    iss{user_input};  //THIS IS WHERE I GET THE ERROR
}

void _input::process_data()
{
    iss >> eday >> emonth >> eihours >> eimins >> eiap >> eohours >> eomins >> eoap >> emo >> enotes;
    ++esno;
    
}

标签: c++istringstream

解决方案


    iss{user_input};  //THIS IS WHERE I GET THE ERROR

语法表明,重新/构造issin为时已晚(且非法)。get_input相反,必须使用 new 重新/初始化流user_input

    iss.clear();
    iss.str(user_input);

推荐阅读