';std::string';没有名为front的成员

';std::string';没有名为front的成员,string,qt,function,gcc,c++11,String,Qt,Function,Gcc,C++11,我在谷歌上搜索了一下,发现如果编译器不支持C++11,就会出现这种情况,但GCC应该从4.8开始就支持这种情况。我做错什么了吗?我对C++是全新的,所以我不会感到惊讶。 注意:我跳过了“main”函数,因为它只用于加载QT GUI。要使gcc和其他编译器在C++11模式下工作,您应该将CONFIG+=C++11添加到.pro文件中。然后std::string将有一个成员.front。这比将-std=c++11添加到QMAKE_cxflags要好,因为它可以与Qt支持的任何编译器(visualst

我在谷歌上搜索了一下,发现如果编译器不支持C++11,就会出现这种情况,但GCC应该从4.8开始就支持这种情况。我做错什么了吗?我对C++是全新的,所以我不会感到惊讶。
注意:我跳过了“main”函数,因为它只用于加载QT GUI。

要使
gcc
和其他编译器在C++11模式下工作,您应该将
CONFIG+=C++11
添加到.pro文件中。然后
std::string
将有一个成员
.front
。这比将
-std=c++11
添加到
QMAKE_cxflags
要好,因为它可以与Qt支持的任何编译器(visualstudio、sunstudio等)一起工作。这样做的缺点是,您将需要Qt 5或更高版本的
qmake
qmake
然后将从编译器
mkspec
qmake\u cxflags\u CXX11
)读取所需的标志,并将其附加到
qmake\u cxflags

,以使
gcc
和其他编译器在C++11模式下工作。您应该将
CONFIG+=C++11
添加到.pro文件中。然后
std::string
将有一个成员
.front
。这比将
-std=c++11
添加到
QMAKE_cxflags
要好,因为它可以与Qt支持的任何编译器(visualstudio、sunstudio等)一起工作。这样做的缺点是,您将需要Qt 5或更高版本的
qmake
qmake
然后将从编译器
mkspec
qmake\u CXXFLAGS\u CXX11
)读取所需的标志,并将其附加到
qmake\u cxflags

“GCC应该支持该标志”-但前提是您告诉它。您是否在编译器参数中指定了
-std=c++11
?我也不太确定如何指定。明白了!我不得不将“QMAKE_cxflags+=-std=c++11”添加到我的.pro(qt项目)文件:)谢谢@将
CONFIG+=c++11
行添加到.pro文件中。它更好,因为它可以与Visual Studio和其他编译器一起使用。@Nazar554我认为这非常有用,您应该将其作为答案发布。“GCC应该支持它”-但前提是您告诉它。您是否在编译器参数中指定了
-std=c++11
?我也不太确定如何指定。明白了!我不得不将“QMAKE_cxflags+=-std=c++11”添加到我的.pro(qt项目)文件:)谢谢@将
CONFIG+=c++11
行添加到.pro文件中。它更好,因为它可以与Visual Studio和其他编译器一起使用。@Nazar554我认为这非常有用,您应该将其作为答案发布。
#include <iostream>
#include <string>
using namespace std;

string buff, resultstr, userstr;

string convert(const string& userstr)
{
    buff = userstr.front();
    resultstr = userstr;
    resultstr.front() = '_';
    resultstr = resultstr + buff + "ay";
    return resultstr;
}
in function 'std::string convert(const string& userstr)':
'const string' has no member named 'front'
'std::string' has no member named 'front'