0

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;
};

なぜそうなのか誰か知っていますか?平 "。' が検出されても停止しません。

前もって感謝します。

4

1 に答える 1

1

getline(cin, message1->get_text_input())値で返されるフィールド text_input を取得します。これで、メッセージを入力する新しい文字列ができましたが、名前が付けられないため、すぐに破棄されます。問題を解決するには、get_text_input が参照を返すようにします。

string& Message::get_text_input()
{
return text_input;
}

そうすれば、入力文字列は元の文字列に行を取得します。また、参照と値を調べてください。それらはたくさん必要になります。

于 2013-06-28T11:14:07.227 に答える