c++ - 当我尝试在 c++ 中的 Visual Studio 中将字符串分配给 istringstream 对象时,为什么会出现错误?
问题描述
下面的类将string
一行作为用户的输入。我的目标是将其存储在 中istringstream iss
,然后从中提取各种数据istringstream iss
到各种变量中。但是,当我尝试使用 初始化iss
时string 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;
}
解决方案
iss{user_input}; //THIS IS WHERE I GET THE ERROR
语法表明,重新/构造iss
in为时已晚(且非法)。get_input
相反,必须使用 new 重新/初始化流user_input
。
iss.clear();
iss.str(user_input);
推荐阅读
- java - 连接不可用,但谁在重试?
- javascript - Cordova iOS:加载资源失败:在此服务器上找不到请求的 URL
- angular - 键值对数组转换为数组对象
- html - 如何在不使用绝对位置/固定位置或弹性框的情况下垂直居中侧边栏(老式方式)
- google-oauth - 如何从多个安卓设备修改谷歌驱动器上的文件?
- docker - ksqlDB CLI 不适用于 dockerized ksqlDB 服务器
- xamarin - 如何在 Xamarin 中更改选定的选项卡标题颜色
- python - Traceback(最近一次通话最后一次)
在 , IndexError: (列表索引超出范围) - javascript - Javascript field.setCustomValidity() 未将字段设置为有效
- cvat - 如何在 cvat 中绘制立方体注释