0

次のコードをコンパイルすると、次のエラーが発生します。これを修正する方法は?ご協力いただきありがとうございます。

エラー C2079: 'issline' は未定義のクラス 'std::basic_istringstream<_Elem,_Traits,_Alloc>' 1> を 1>
[ 1> _Elem=char, 1>
_Traits=std::char_traits, 1> _Alloc=std:: で使用しています::アロケーター 1> ] 1>d:\technical\c++study\readparsing\readparsing\main.cpp(49): エラー C2440: '初期化中': 'std::string' から 'int' に変換できません 1> いいえこの変換を実行できるユーザー定義変換演算子を使用できるか、演算子を呼び出すことができません: 'int' 型の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません) 1>
d:\technical\c++study\readparsing\readparsing\timestamp.h(31): 'std::istream &operator >>(std::istream &,TimeStamp &)' 1>
引数を一致させようとしている可能性がありますリスト '(int, タイムスタンプ)'

TimeStamp.h に次のコードがあります

#ifndef __TIMESTAMP_
#define __TIMESTAMP_

#include <iostream>

struct DateTime
{
    unsigned int dwLowDateTime;
    unsigned int  dwHighDateTime;
};


class TimeStamp 
{
public:
    TimeStamp()
    {
        m_time.dwHighDateTime = 0;
        m_time.dwLowDateTime = 0;
    }

    TimeStamp& operator = (unsigned __int64 other)
    {
        *( unsigned __int64*)&m_time = other;
        return *this;
    }
private:
    DateTime        m_time;
};

std::istream& operator >> (std::istream& input, TimeStamp& timeStamp);

#endif

main.cpp には次のようなものがあります

#include <iostream>
#include <algorithm>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#include "TimeStamp.h"

std::istream& operator >> (std::istream& input, TimeStamp& timeStamp)
{
    // 1.
    // use regular stream operator parsing technique to parse individual integer x values (separated in the form "xxxx-xx-xx xx:xx:xx.xxx")
    // for year, month, day, hour, minute, seconds, mseconds
    unsigned int year;
    unsigned int month;
    unsigned int day;
    unsigned int hour;
    unsigned int minute;
    unsigned int seconds;
    unsigned int milliSeconds;
    char dash;
    char colon;

    input >> year >> dash >> month >> dash >> day >> hour >> colon >> minute >> colon >> seconds >> colon >> milliSeconds;

    cout << "Time stamp opeator is called " << std::endl;

    // 2.
    // code to be written.

    return input;
}



int main () {

    std::string dateTime = "2012-06-25 12:00:10.000";

    TimeStamp myTimeStamp;

    std::istringstream issline(dateTime);

    issline >> myTimeStamp;


   return 0;
}
4

2 に答える 2

3

#include <sstream>を使用する必要があると思いますistringstream

于 2012-06-28T12:39:03.673 に答える
1

必要がある

#include <sstream>

main.cpp で。エラー メッセージは、(前方) 宣言されているが定義されていないクラスを使用していることを示しています。通常、これはインクルードが欠落していることを意味します。

#include <iosfwd>代わりに TimeStamp.h で十分であることに注意してください#include <iostream>

于 2012-06-28T12:46:16.937 に答える