使用语句 getline(cin,s); 报错 Error - no matching function for call to 'getline'
相关环境 MacOS sublime2 clang 编译
万脸懵逼... 找不到相关解决方法 QAQ 求解

万脸懵逼... 找不到相关解决方法 QAQ 求解
1 forcecharlie Jan 3, 2017 你是引入了 #include <sdtio.h> ssize_t getline(char **lineptr, size_t *n, FILE *stream); 还是 #include <string> istream& getline (istream& is, string& str, char delim); http://www.cplusplus.com/reference/string/string/getline/ |
2 Em5O7B1JGfjQnBry Jan 3, 2017 via Android 如果 C++的话。。。不要动不动就 using namespace std; 直接写 std::getline 、 std::cin 来调用, 如果用的多的比如 std:: cout,可以这样来: using std::cout; |
3 q397064399 Jan 3, 2017 楼上+1 C++历史遗留问题,包管理机制以及命名空间有问题,最好还是不要 using namespace std |
4 q397064399 Jan 3, 2017 使用系统函数或者库函数最好还是 使用全限定名称 |
5 polebug OP @forcecharlie #include <string> |
6 polebug OP @q397064399 @svenFeng 不使用 using namespace std;果然解决了问题 顺便想请问一下,以前在 win 下用 vs,dev-c++这类 ide 并没有遇到这类问题是为什么 |
7 q397064399 Jan 3, 2017 @polebug 因为他们对新手友好,我只能这么解释,我用 vs 的时候 也没出国这档子事情,后来是上了 stackoverflow 老司机教育我,要用全限定名 或者 using xx 之类的,我就学会了 另外我 c/c++ 都是 linux 环境下搞的,不在 windows 下面搞, |
8 Em5O7B1JGfjQnBry Jan 3, 2017 #include <string> #include <iostream> using namespace std; int main(){ string s; getline(cin, s); return 0; } 如果你的代码是这样的,事实上我用 Linux 下的 clang++3.8/3.9 和 g++-6 编译,都不会报错,会调用这个函数: istream& getline (istream& is, string& str, char delim); ,微软家的编译器应该也是这样的,所以你可以把代码贴上来看看。 |
9 Em5O7B1JGfjQnBry Jan 3, 2017 |
10 yangff Jan 3, 2017 不合理啊,怕别是编译器 /库实现的 bug |
11 Em5O7B1JGfjQnBry Jan 3, 2017 istream& getline (istream& is, string& str);看错- -,应该是调用这个。 @polebug |
12 yangff Jan 3, 2017 #include <cstdio> namespace Fuck { void shit(int x){ printf("a"); } } void shit(double y) {printf("b");} using namespace Fuck; int main(){ shit(1); // Fuck::shit(int); shit(1.0); // ::shit(double); } LZ 你执行这个试试? |
13 yangff Jan 3, 2017 至于限定不限定的…… namespace A{ class A //... } 才坑…… |