【发布时间】:2013-11-19 23:12:32
【问题描述】:
我正在为我的编程课做作业。给定的函数原型之一是:
string read_text(const string & prompt);
我把函数定义写成:
string read_text(const string & prompt)
{
cout << "Enter your text: ";
getline(cin, prompt);
}
但是,这给了我一个错误:
freq.cpp: In function 'std::string read_text(const std::string&)':
freq.cpp:80: error: no matching function for call to 'getline(std::istream&, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
我读到 getline 不应该引用 const 变量,所以我删除了该部分,但现在运行程序时出现分段错误。
【问题讨论】:
-
发生分段错误时您使用什么代码? (P.S - GDB 是你的朋友)
-
向我们展示你是如何调用它的,以及你在传递字符串后如何处理它。
-
你在 const 提示中传递给 getline,你应该传递你想要读取文本写入的字符串变量。
-
没有seg-fault,但显然是编译错误。
-
这篇文章对我有帮助,尽管它的评价是负面的,所以我提高了它。我有一个完全专业化的函数模板,我忘记在其中包含一个 return 语句。与 OP 的程序不同,它实际上确实导致了分段错误