尝试在 C++ 中执行指针循环时遇到问题。我想做的是,用户可以保留输入消息,新行上的消息将被附加。只有在出现“.”时才会停止提示。在新行的开头检测到。这是我的主要方法:
vector <Message*> message_list;
Message* message1 = new Message("Student1", "Student2");
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());
}
}
}
这是我的 .cpp 文件:
Message::Message(string recipient, string sender)
{
this->recipient = recipient;
this->sender = sender;
}
string Message::get_text_input()
{
return text_input;
}
void Message::append(string text)
{
message += text + "\n";
}
string Message::to_string() const
{
return ("From: " + sender + "\n" + "To: " + recipient + "\n");
}
void Message::print() const
{
cout << message;
}
我的标题类:
class Message
{
public:
Message(std::string recipient, std::string sender);
std::string get_text_input();
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;
};
有人知道为什么会这样吗?甚至 ”。'检测到,它仍然不会停止。
提前致谢。
最佳答案
在 getline(cin, message1->get_text_input())
中,您将获得按值返回的字段 text_input。所以现在你有了一个全新的字符串,你在其中填充了消息,但它立即被销毁了,因为它永远不会得到一个名字。
要解决您的问题,请让 get_text_input 返回一个引用:
string& Message::get_text_input()
{
return text_input;
}
那样的话,输入的字符串就会把行变成原始字符串。 另外,去查找 References 和 Values,您将非常需要它们。
关于c++ - 使用指针时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363167/