getline()方法没有重载函数的实例

时间:2013-06-28 10:05:11

标签: c++ getline

我在尝试为C ++做类时遇到了一些问题。这是我的头文件.h:

#include <iostream>
#include <string>
#ifndef MESSAGES__H__
#define MESSAGES__H__

class Message
{
    public:
        Message(std::string recipient, std::string sender);
        void append(std::string text);
        std::string to_string() const;
        void print() const;
    private:
        std::string recipient;
        std::string sender;
        std::string message;
        std::string text_input;
        char* timestamp;
};

#endif

当我运行main方法时,getline(cin,)给了我一些错误信息:

int main()
{
    vector <Message*> message_list;
    Message* message1 = new Message("Student1", "Gabriel");
    cout << "Enter message text line, enter . on new line to finish: " << endl;
    while(getline(cin, text_input))
    {
    }
}

getline方法没有给我任何重载函数的实例。此外,从同一行,text_input显示标识符未定义。我以为我已经在.h课上宣布了?

提前致谢。

更新部分

现在所有错误都已修复:

vector <Message*> message_list;
Message* message1 = new Message("Saiful", "Gabriel");
cout << "Enter message text line, enter . on new line to finish: " << endl;
while(getline(cin, message1->get_text_input()))
{
    if(message1->get_text_input() == ("."))
    {
        break;
    }
    else
    {
        message1->append(message1->get_text_input());
    }
}

在while循环中,一次“。”在新线的开头被检测到,它假设将停止。但是,不管我输入了多少次“。”在新的一线,它只是继续提示。有谁知道为什么?

3 个答案:

答案 0 :(得分:0)

修复“text_input显示标识符未定义”

您需要更改

 while(getline(cin, text_input))

 while(getline(cin, message1->text_input))

这可能会解决第一个错误。

答案 1 :(得分:0)

尝试改变你的循环:

while(getline(cin,&message1->text_input)) 
{

}

如果我没记错的话,getline功能如下:

getline(isstream& stream, string& string)

答案 2 :(得分:0)

感觉就像是在使事情变得复杂。只需在getline中使用临时变量即可。如果输入是“。”然后中断,否则将该行附加到Message对象。因此,您应该能够从Message头文件中删除text_input成员变量。

std::vector<Message*> message_list;
Message* message1 = new Message("Saiful", "Gabriel");
std::cout << "Enter message text line, enter . on new line to finish: " << std::endl;
std::string input = "";
while(getline(std::cin, input))
{
    if(input == ".")
    {
        break;
    }
    else
    {
        message1->append(input);
    }
}