2013-06-28 63 views
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; 
}; 

是否有人知道爲什麼會這樣呢?甚至「。」被檢測到,它仍然不會停止。

在此先感謝。

+0

'getline(cin,message1-> get_text_input())'編譯?它不應該。 –

+2

請不要張貼在多個名稱http://stackoverflow.com/questions/17362152/getline-method-no-instance-of-overloaded-function –

+0

但我該怎麼寫getline(cin,text_input)?因爲如果我這樣做,我會打錯誤信息。我會更新我的頭文件 –

回答

1

在你的返回值字段TEXT_INPUT的getline(cin, message1->get_text_input())。所以,現在你有一個全新的字符串,在其中您填寫的信息,但它。瞬間毀滅,因爲它從來沒有得到一個名字 解決您的問題,使get_text_input返回一個參考:

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

這樣,輸入的字符串會得到行到原始字符串 此外,去查閱參考文獻和價值觀,您將需要很多。

+0

好的,非常感謝。它是固定的。與上述評論不同的是,他們只知道如何發現重複的帖子,但沒有幫助。謝謝Flonk –