getline()方法没有重载函数的实例
getline() method no instance of overloaded function
我在为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
当我运行主方法时,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循环中,一旦在新行的开头检测到".",它就会停止。然而,无论我在新行输入多少次".",它都会不断提示。有人知道为什么吗?
要修复"text_input显示标识符未定义"
您需要更改
while(getline(cin, text_input))
至
while(getline(cin, message1->text_input))
这可能会修复第一个错误。
尝试这样更改循环:
while(getline(cin,&message1->text_input))
{
}
如果我没记错的话,getline
函数看起来是这样的:
getline(isstream& stream, string& string)
感觉事情过于复杂了。只需在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);
}
}
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 可以打印矢量和矢量中的矢量的非重载C++函数
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 使用模板重载函数
- C++线程中,没有重载函数接受 X 参数
- std::vector 没有重载函数的实例与参数列表匹配
- C++重载函数,一个采用基类的参数,另一个采用派生类的参数
- 错误:无法解析对重载函数的引用;你的意思是调用它吗?
- 对重载函数find_first_not_of的不明确调用
- 如何从重载解析中删除重载函数?
- CUDA:重载函数"isnan"的多个实例
- C++派生类重载函数(带有 std::function 参数)不可见
- 避免在人为的重载函数调用中拼写出类型
- C++:如何为多个重载函数保留通用代码路径?
- 什么时候可以使用常量装饰调用我的重载函数?
- 尝试使用谓词函数会导致错误:"std::sort"未找到匹配的重载函数
- std::调用,未找到匹配的重载函数
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- 为什么使用不匹配的参数调用重载函数仍然有效
- 如何通过签名作为模板参数来解决重载函数?