stringstream::in 语法错误

发布于 2024-10-14 16:41:04 字数 719 浏览 7 评论 0原文

我正在尝试使用 stringstream 执行类似的操作(我简化了代码以查明错误):

Token.h

#include <stdio.h>
#include <vector>
#include <sstream>

using namespace std;

class Token {
public:
   static stringstream ss (stringstream::in | stringstream::out);
   static void set_input_string(std::string str);
};

Token.cpp

#include "Token.h"

void Token::set_input_string(std::string str)
{
   ss << str;
}

当我尝试编译时,我得到: 错误 C2061:语法错误:标识符 'in' 在 Token.h 中的 static stringstream ss (stringstream::in | stringstream::out); 行和 Visual Studios 2010 下划线红色 stringstream::in |

I am trying to use a stringstream to do something like this (I simplified my code to pinpoint the error):

Token.h

#include <stdio.h>
#include <vector>
#include <sstream>

using namespace std;

class Token {
public:
   static stringstream ss (stringstream::in | stringstream::out);
   static void set_input_string(std::string str);
};

Token.cpp

#include "Token.h"

void Token::set_input_string(std::string str)
{
   ss << str;
}

When I try to compile i get:
error C2061: syntax error : identifier 'in' in Token.h on line static stringstream ss (stringstream::in | stringstream::out); and visual studios 2010 underlines in red stringstream::in |

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吻安 2024-10-21 16:41:04

您不能在类定义中初始化非整数值。你应该有:

// Token.h
#include <cstdio> // thisis the C++ header
#include <vector>
#include <sstream>

// don't do this, especially not in a header file - function-scope at best
// using namespace std;

class Token {
public:
    static std::stringstream ss; // declare

    // probably want this parameter to be a const-reference
    static void set_input_string(std::string str);
};

并且:

// Token.cpp
#include "Token.h"

// define
std::stringstream Token::ss(std::stringstream::in | std::stringstream::out); 

void Token::set_input_string(std::string str)
{
   ss << str;
}

You cannot initialize non-integral values in the class definition. You should have:

// Token.h
#include <cstdio> // thisis the C++ header
#include <vector>
#include <sstream>

// don't do this, especially not in a header file - function-scope at best
// using namespace std;

class Token {
public:
    static std::stringstream ss; // declare

    // probably want this parameter to be a const-reference
    static void set_input_string(std::string str);
};

And:

// Token.cpp
#include "Token.h"

// define
std::stringstream Token::ss(std::stringstream::in | std::stringstream::out); 

void Token::set_input_string(std::string str)
{
   ss << str;
}
同展鸳鸯锦 2024-10-21 16:41:04

不能同时声明和定义成员变量。 ss 的定义应该在类声明之外:

class Token {
public:
   static stringstream ss; // declaration
   static void set_input_string(std::string str);
};

stringstream Token::ss (stringstream::in | stringstream::out); // definition in your cpp file

You can't declare and define a member variable at the same time. The definition of ss should be outside of the class declaration:

class Token {
public:
   static stringstream ss; // declaration
   static void set_input_string(std::string str);
};

stringstream Token::ss (stringstream::in | stringstream::out); // definition in your cpp file
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文