我在尝试为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循环中,一次“。”在新线的开头被检测到,它假设将停止。但是,不管我输入了多少次“。”在新的一线,它只是继续提示。有谁知道为什么?
答案 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);
}
}