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