万脸懵逼... 找不到相关解决方法 QAQ 求解
1
forcecharlie 2017 年 1 月 3 日
你是引入了
#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 2017 年 1 月 3 日 via Android 如果 C++的话。。。不要动不动就 using namespace std;
直接写 std::getline 、 std::cin 来调用, 如果用的多的比如 std:: cout,可以这样来: using std::cout; |
3
q397064399 2017 年 1 月 3 日
楼上+1 C++历史遗留问题,包管理机制以及命名空间有问题,最好还是不要 using namespace std
|
4
q397064399 2017 年 1 月 3 日
使用系统函数或者库函数最好还是 使用全限定名称
|
5
polebug OP @forcecharlie #include <string>
|
6
polebug OP @q397064399
@svenFeng 不使用 using namespace std;果然解决了问题 顺便想请问一下,以前在 win 下用 vs,dev-c++这类 ide 并没有遇到这类问题是为什么 |
7
q397064399 2017 年 1 月 3 日
@polebug 因为他们对新手友好,我只能这么解释,我用 vs 的时候 也没出国这档子事情,后来是上了 stackoverflow
老司机教育我,要用全限定名 或者 using xx 之类的,我就学会了 另外我 c/c++ 都是 linux 环境下搞的,不在 windows 下面搞, |
8
Em5O7B1JGfjQnBry 2017 年 1 月 3 日 #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 2017 年 1 月 3 日
|
10
yangff 2017 年 1 月 3 日
不合理啊,怕别是编译器 /库实现的 bug
|
11
Em5O7B1JGfjQnBry 2017 年 1 月 3 日
istream& getline (istream& is, string& str);看错- -,应该是调用这个。
@polebug |
12
yangff 2017 年 1 月 3 日 #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 2017 年 1 月 3 日
至于限定不限定的……
namespace A{ class A //... } 才坑…… |