我一直在玩一些c ++你好世界的东西,并且认为我会得到qt字符串旋转.回声和转换字符串很好,但endl似乎很特别:
#include <QTextStream>
int main(int, char*[])
{
// Works, but is hacky (note: empty string):
// QTextStream(stdout) << "" << endl;
// Does not compile:
// QTextStream(stdout) << endl;
// Best? way (thanks to suy on #qt@freenode):
QTextStream out(stdout);
out << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么裸露的调用QString(out) << end;无法编译?编译器指出没有转换的情况,但为什么它正确转换为空字符串?这是qt中的错误,还是c ++如何查找模板?完整的编译错误如下.
有一个要点,为了测试:
mkdir qt
cd qt
wget https://gist.github.com/e12e/f79e9f0e66ee3600e0aa/raw/7ab8239060134601e93a0013706df638af0b3edf/qt.cpp
cat qt.cpp #Check what you're compiling ;-)
qmake -project
qmake -makefile
make
./qt # outputs empty line
Run Code Online (Sandbox Code Playgroud)
请注意,作为已发布的gist工作(输出换行符并退出),您需要更改注释,以便前缀为"无法编译"的行以获得如下错误:
g++ …Run Code Online (Sandbox Code Playgroud)