我在QT中声明StringStream时遇到问题。 这是我的代码:
std::stringstream ss;
for (int i = 0; i <= path.length()-1; ++i)
{
if (path[i] == '\\')
{
ss << "\\\\";
}
else
{
ss << path[i];
}
}
path = QString::fromStdString(ss.str());//store the stringstream to a string
return path;
错误信息是:
aggregate 'std::stringstream ss' has incomplete type and cannot be defined;
答案 0 :(得分:3)
混合QString
和std::string
或相关通常不是一个好主意。您应该使用replace( QChar ch, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
等QString
方法实现该方法。
path.replace('\\', "\\\\");
顺便说一句,您不能将QString直接与任何标准std
流一起使用,也没有定义过载。 qPrintable
函数可以提供帮助。您需要包含<sstream>
才能使用std::stringstream
。
答案 1 :(得分:1)
包含<sstream>
以使用stringstream
类。
虽然我同意@Mat,但为了这个特殊目的,使用Qt的QString方法可能是一个好主意。