sc/qa/unit/helper/qahelper.cxx               |    6 -
 sc/qa/unit/subsequent_export_test3.cxx       |   21 +----
 sc/source/core/data/documen4.cxx             |   39 +++++-----
 sc/source/core/data/document.cxx             |   10 +-
 sc/source/core/data/documentimport.cxx       |   39 +++++-----
 sc/source/core/data/funcdesc.cxx             |   61 +++++-----------
 sc/source/core/tool/address.cxx              |    4 -
 sc/source/core/tool/chgtrack.cxx             |   16 +---
 sc/source/core/tool/compiler.cxx             |    4 -
 sc/source/core/tool/formulalogger.cxx        |   41 ++++------
 sc/source/core/tool/rangeutl.cxx             |    3 
 sc/source/core/tool/reffind.cxx              |    3 
 sc/source/filter/dif/difexp.cxx              |   55 ++++++--------
 sc/source/filter/excel/read.cxx              |    5 -
 sc/source/filter/excel/xecontent.cxx         |   10 --
 sc/source/filter/excel/xetable.cxx           |    6 -
 sc/source/filter/excel/xipivot.cxx           |    3 
 sc/source/filter/html/htmlexp.cxx            |   29 +++----
 sc/source/filter/oox/formulabase.cxx         |    3 
 sc/source/filter/xml/xmlexprt.cxx            |  102 ++++++++++++---------------
 sc/source/ui/app/inputhdl.cxx                |   23 ++----
 sc/source/ui/condformat/condformathelper.cxx |   38 ++++------
 sc/source/ui/dbgui/asciiopt.cxx              |    3 
 sc/source/ui/dbgui/csvruler.cxx              |    3 
 sc/source/ui/dbgui/dbnamdlg.cxx              |    9 --
 sc/source/ui/view/cellsh3.cxx                |   40 +++++-----
 sc/source/ui/view/dbfunc3.cxx                |    6 -
 sc/source/ui/view/gridwin.cxx                |    8 --
 sc/source/ui/view/viewfun2.cxx               |    4 -
 29 files changed, 252 insertions(+), 342 deletions(-)

New commits:
commit 86313f053315cd0ba896e494d7bac14d2279c9b4
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Sat Mar 25 19:30:24 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun Mar 26 11:24:13 2023 +0000

    loplugin:stringadd in sc
    
    after my patch to merge the bufferadd loplugin into stringadd
    
    Change-Id: Ifa70db5be4719fe66d3043e5e49403246f6aa8bd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149582
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index 27230e0d2b43..dbfb6af398f2 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -131,8 +131,7 @@ void ScModelTestBase::testFile(const OUString& aFileName, 
ScDocument& rDoc, SCTA
     catch (const orcus::parse_error& e)
     {
         std::cout << "reading csv content file failed: " << e.what() << 
std::endl;
-        OStringBuffer aErrorMsg("csv parser error: ");
-        aErrorMsg.append(e.what());
+        OString aErrorMsg = OString::Concat("csv parser error: ") + e.what();
         CPPUNIT_ASSERT_MESSAGE(aErrorMsg.getStr(), false);
     }
 }
@@ -155,8 +154,7 @@ void ScModelTestBase::testCondFile( const OUString& 
aFileName, ScDocument* pDoc,
     catch (const orcus::parse_error& e)
     {
         std::cout << "reading csv content file failed: " << e.what() << 
std::endl;
-        OStringBuffer aErrorMsg("csv parser error: ");
-        aErrorMsg.append(e.what());
+        OString aErrorMsg = OString::Concat("csv parser error: ") + e.what();
         CPPUNIT_ASSERT_MESSAGE(aErrorMsg.getStr(), false);
     }
 }
diff --git a/sc/qa/unit/subsequent_export_test3.cxx 
b/sc/qa/unit/subsequent_export_test3.cxx
index f07f25b2e3a7..4039f54547ef 100644
--- a/sc/qa/unit/subsequent_export_test3.cxx
+++ b/sc/qa/unit/subsequent_export_test3.cxx
@@ -264,22 +264,11 @@ CPPUNIT_TEST_FIXTURE(ScExportTest3, 
testBordersExchangeXLSX)
 
 static OUString toString(const ScBigRange& rRange)
 {
-    OUStringBuffer aBuf;
-    aBuf.append("(columns:");
-    aBuf.append(rRange.aStart.Col());
-    aBuf.append('-');
-    aBuf.append(rRange.aEnd.Col());
-    aBuf.append(";rows:");
-    aBuf.append(rRange.aStart.Row());
-    aBuf.append('-');
-    aBuf.append(rRange.aEnd.Row());
-    aBuf.append(";sheets:");
-    aBuf.append(rRange.aStart.Tab());
-    aBuf.append('-');
-    aBuf.append(rRange.aEnd.Tab());
-    aBuf.append(')');
-
-    return aBuf.makeStringAndClear();
+    return "(columns:" + OUString::number(rRange.aStart.Col()) + "-"
+           + OUString::number(rRange.aEnd.Col()) + ";rows:" + 
OUString::number(rRange.aStart.Row())
+           + "-" + OUString::number(rRange.aEnd.Row())
+           + ";sheets:" + OUString::number(rRange.aStart.Tab()) + "-"
+           + OUString::number(rRange.aEnd.Tab()) + ")";
 }
 
 CPPUNIT_TEST_FIXTURE(ScExportTest3, testTrackChangesSimpleXLSX)
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index e7945b773d9d..0db93c0aeb5b 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -386,19 +386,18 @@ void ScDocument::InsertTableOp(const ScTabOpParam& 
rParam,  // multiple (repeate
     }
 
     ScRefAddress aRef;
-    OUStringBuffer aForString;
-    aForString.append('=');
-    aForString.append(ScCompiler::GetNativeSymbol(ocTableOp));
-    aForString.append(ScCompiler::GetNativeSymbol( ocOpen));
+    OUStringBuffer aForString("="
+        + ScCompiler::GetNativeSymbol(ocTableOp)
+        + ScCompiler::GetNativeSymbol( ocOpen));
 
     const OUString& sSep = ScCompiler::GetNativeSymbol( ocSep);
     if (rParam.meMode == ScTabOpParam::Column) // column only
     {
         aRef.Set( rParam.aRefFormulaCell.GetAddress(), true, false, false );
-        aForString.append(aRef.GetRefString(*this, nTab1));
-        aForString.append(sSep);
-        aForString.append(rParam.aRefColCell.GetRefString(*this, nTab1));
-        aForString.append(sSep);
+        aForString.append(aRef.GetRefString(*this, nTab1)
+            + sSep
+            + rParam.aRefColCell.GetRefString(*this, nTab1)
+            + sSep);
         aRef.Set( nCol1, nRow1, nTab1, false, true, true );
         aForString.append(aRef.GetRefString(*this, nTab1));
         nCol1++;
@@ -408,10 +407,10 @@ void ScDocument::InsertTableOp(const ScTabOpParam& 
rParam,  // multiple (repeate
     else if (rParam.meMode == ScTabOpParam::Row) // row only
     {
         aRef.Set( rParam.aRefFormulaCell.GetAddress(), false, true, false );
-        aForString.append(aRef.GetRefString(*this, nTab1));
-        aForString.append(sSep);
-        aForString.append(rParam.aRefRowCell.GetRefString(*this, nTab1));
-        aForString.append(sSep);
+        aForString.append(aRef.GetRefString(*this, nTab1)
+            + sSep
+            + rParam.aRefRowCell.GetRefString(*this, nTab1)
+            + sSep);
         aRef.Set( nCol1, nRow1, nTab1, true, false, true );
         aForString.append(aRef.GetRefString(*this, nTab1));
         nRow1++;
@@ -420,15 +419,15 @@ void ScDocument::InsertTableOp(const ScTabOpParam& 
rParam,  // multiple (repeate
     }
     else // both
     {
-        aForString.append(rParam.aRefFormulaCell.GetRefString(*this, nTab1));
-        aForString.append(sSep);
-        aForString.append(rParam.aRefColCell.GetRefString(*this, nTab1));
-        aForString.append(sSep);
+        aForString.append(rParam.aRefFormulaCell.GetRefString(*this, nTab1)
+            + sSep
+            + rParam.aRefColCell.GetRefString(*this, nTab1)
+            + sSep);
         aRef.Set( nCol1, nRow1 + 1, nTab1, false, true, true );
-        aForString.append(aRef.GetRefString(*this, nTab1));
-        aForString.append(sSep);
-        aForString.append(rParam.aRefRowCell.GetRefString(*this, nTab1));
-        aForString.append(sSep);
+        aForString.append(aRef.GetRefString(*this, nTab1)
+            + sSep
+            + rParam.aRefRowCell.GetRefString(*this, nTab1)
+            + sSep);
         aRef.Set( nCol1 + 1, nRow1, nTab1, true, false, true );
         aForString.append(aRef.GetRefString(*this, nTab1));
         nCol1++; nRow1++;
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index eac0117f6994..b295e68f69e0 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -425,16 +425,14 @@ void ScDocument::CreateValidTabName(OUString& rName) const
         if ( !ValidNewTabName(rName) )
         {
             SCTAB i = 1;
-            OUStringBuffer aName;
+            OUString aName;
             do
             {
                 i++;
-                aName = rName;
-                aName.append('_');
-                aName.append(static_cast<sal_Int32>(i));
+                aName = rName + "_" + 
OUString::number(static_cast<sal_Int32>(i));
             }
-            while (!ValidNewTabName(aName.toString()) && (i < MAXTAB+1));
-            rName = aName.makeStringAndClear();
+            while (!ValidNewTabName(aName) && (i < MAXTAB+1));
+            rName = aName;
         }
     }
 }
diff --git a/sc/source/core/data/documentimport.cxx 
b/sc/source/core/data/documentimport.cxx
index 9f2af767b42f..a6c25a1bd5ec 100644
--- a/sc/source/core/data/documentimport.cxx
+++ b/sc/source/core/data/documentimport.cxx
@@ -489,19 +489,18 @@ void ScDocumentImport::setTableOpCells(const ScRange& 
rRange, const ScTabOpParam
 
     ScDocument& rDoc = mpImpl->mrDoc;
     ScRefAddress aRef;
-    OUStringBuffer aFormulaBuf;
-    aFormulaBuf.append('=');
-    aFormulaBuf.append(ScCompiler::GetNativeSymbol(ocTableOp));
-    aFormulaBuf.append(ScCompiler::GetNativeSymbol(ocOpen));
+    OUStringBuffer aFormulaBuf("="
+        + ScCompiler::GetNativeSymbol(ocTableOp)
+        + ScCompiler::GetNativeSymbol(ocOpen));
 
     OUString aSep = ScCompiler::GetNativeSymbol(ocSep);
     if (rParam.meMode == ScTabOpParam::Column) // column only
     {
         aRef.Set(rParam.aRefFormulaCell.GetAddress(), true, false, false);
-        aFormulaBuf.append(aRef.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
-        aFormulaBuf.append(rParam.aRefColCell.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
+        aFormulaBuf.append(aRef.GetRefString(rDoc, nTab)
+            + aSep
+            + rParam.aRefColCell.GetRefString(rDoc, nTab)
+            + aSep);
         aRef.Set(nCol1, nRow1, nTab, false, true, true);
         aFormulaBuf.append(aRef.GetRefString(rDoc, nTab));
         nCol1++;
@@ -511,10 +510,10 @@ void ScDocumentImport::setTableOpCells(const ScRange& 
rRange, const ScTabOpParam
     else if (rParam.meMode == ScTabOpParam::Row) // row only
     {
         aRef.Set(rParam.aRefFormulaCell.GetAddress(), false, true, false);
-        aFormulaBuf.append(aRef.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
-        aFormulaBuf.append(rParam.aRefRowCell.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
+        aFormulaBuf.append(aRef.GetRefString(rDoc, nTab)
+            + aSep
+            + rParam.aRefRowCell.GetRefString(rDoc, nTab)
+            + aSep);
         aRef.Set(nCol1, nRow1, nTab, true, false, true);
         aFormulaBuf.append(aRef.GetRefString(rDoc, nTab));
         ++nRow1;
@@ -523,15 +522,15 @@ void ScDocumentImport::setTableOpCells(const ScRange& 
rRange, const ScTabOpParam
     }
     else // both
     {
-        aFormulaBuf.append(rParam.aRefFormulaCell.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
-        aFormulaBuf.append(rParam.aRefColCell.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
+        aFormulaBuf.append(rParam.aRefFormulaCell.GetRefString(rDoc, nTab)
+            + aSep
+            + rParam.aRefColCell.GetRefString(rDoc, nTab)
+            + aSep);
         aRef.Set(nCol1, nRow1 + 1, nTab, false, true, true);
-        aFormulaBuf.append(aRef.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
-        aFormulaBuf.append(rParam.aRefRowCell.GetRefString(rDoc, nTab));
-        aFormulaBuf.append(aSep);
+        aFormulaBuf.append(aRef.GetRefString(rDoc, nTab)
+            + aSep
+            + rParam.aRefRowCell.GetRefString(rDoc, nTab)
+            + aSep);
         aRef.Set(nCol1 + 1, nRow1, nTab, true, false, true);
         aFormulaBuf.append(aRef.GetRefString(rDoc, nTab));
         ++nCol1;
diff --git a/sc/source/core/data/funcdesc.cxx b/sc/source/core/data/funcdesc.cxx
index 060cda7a5f6d..93e5e8c77f35 100644
--- a/sc/source/core/data/funcdesc.cxx
+++ b/sc/source/core/data/funcdesc.cxx
@@ -161,8 +161,7 @@ OUString ScFuncDesc::GetParamList() const
                 aSig.append(maDefArgNames[i]);
                 if ( i != nArgCount-1 )
                 {
-                    aSig.append(sep);
-                    aSig.append( " " );
+                    aSig.append(sep + " " );
                 }
             }
             // If only suppressed parameters follow the last added parameter,
@@ -175,46 +174,35 @@ OUString ScFuncDesc::GetParamList() const
         {
             for ( sal_uInt16 nArg = 0; nArg < nVarArgsStart; nArg++ )
             {
-                aSig.append(maDefArgNames[nArg]);
-                aSig.append(sep);
-                aSig.append( " " );
+                aSig.append(maDefArgNames[nArg] + sep + " ");
             }
             /* NOTE: Currently there are no suppressed var args parameters. If
              * there were, we'd have to cope with it here and above for the fix
              * parameters. For now parameters are always added, so no special
              * treatment of a trailing "; " necessary. */
-            aSig.append(maDefArgNames[nVarArgsStart]);
-            aSig.append('1');
-            aSig.append(sep);
-            aSig.append(' ');
-            aSig.append(maDefArgNames[nVarArgsStart]);
-            aSig.append('2');
-            aSig.append(sep);
-            aSig.append(" ... ");
+            aSig.append(maDefArgNames[nVarArgsStart]
+                + "1"
+                + sep + " "
+                + maDefArgNames[nVarArgsStart]
+                + "2"
+                + sep + " ... ");
         }
         else
         {
             for ( sal_uInt16 nArg = 0; nArg < nVarArgsStart; nArg++ )
             {
-                aSig.append(maDefArgNames[nArg]);
-                aSig.append(sep);
-                aSig.append( " " );
+                aSig.append(maDefArgNames[nArg] + sep + " ");
             }
 
-            aSig.append(maDefArgNames[nVarArgsStart]);
-            aSig.append('1');
-            aSig.append(sep);
-            aSig.append(maDefArgNames[nVarArgsStart+1]);
-            aSig.append('1');
-            aSig.append(sep);
-            aSig.append( " " );
-            aSig.append(maDefArgNames[nVarArgsStart]);
-            aSig.append('2');
-            aSig.append(sep);
-            aSig.append(maDefArgNames[nVarArgsStart+1]);
-            aSig.append('2');
-            aSig.append(sep);
-            aSig.append( " ... " );
+            aSig.append(maDefArgNames[nVarArgsStart]
+                + "1" + sep
+                + maDefArgNames[nVarArgsStart+1]
+                + "1" + sep
+                + " "
+                + maDefArgNames[nVarArgsStart]
+                + "2" + sep
+                + maDefArgNames[nVarArgsStart+1]
+                + "2" + sep + " ... " );
         }
     }
 
@@ -232,11 +220,9 @@ OUString ScFuncDesc::getSignature() const
         OUString aParamList = GetParamList();
         if( !aParamList.isEmpty() )
         {
-            aSig.append( "( " );
-            aSig.append(aParamList);
+            aSig.append( "( " + aParamList
             // U+00A0 (NBSP) prevents automatic line break
-            aSig.append( u'\x00A0' );
-            aSig.append( ")" );
+                + u"\x00A0" ")" );
         }
         else
             aSig.append( "()" );
@@ -252,9 +238,7 @@ OUString ScFuncDesc::getFormula( const ::std::vector< 
OUString >& _aArguments )
 
     if(mxFuncName)
     {
-        aFormula.append( *mxFuncName );
-
-        aFormula.append( "(" );
+        aFormula.append( *mxFuncName + "(" );
         if ( nArgCount > 0 && !_aArguments.empty() && 
!_aArguments[0].isEmpty())
         {
             ::std::vector< OUString >::const_iterator aIter = 
_aArguments.begin();
@@ -264,8 +248,7 @@ OUString ScFuncDesc::getFormula( const ::std::vector< 
OUString >& _aArguments )
             ++aIter;
             while( aIter != aEnd && !aIter->isEmpty() )
             {
-                aFormula.append( sep );
-                aFormula.append( *aIter );
+                aFormula.append( sep + *aIter );
                 ++aIter;
             }
         }
diff --git a/sc/source/core/tool/address.cxx b/sc/source/core/tool/address.cxx
index 7bd66f6402e4..7d95ac0fdfd6 100644
--- a/sc/source/core/tool/address.cxx
+++ b/sc/source/core/tool/address.cxx
@@ -2194,9 +2194,7 @@ OUString ScRange::Format( const ScDocument& rDoc, 
ScRefFlags nFlags,
                 pDoc = nullptr;
             else
                 nFlags |= ScRefFlags::TAB_3D;
-            OUString aName(aEnd.Format(nFlags, pDoc, rDetails));
-            r.append(":");
-            r.append(aName);
+            r.append(":" + aEnd.Format(nFlags, pDoc, rDetails));
         }
         break;
     }
diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx
index 996ff1c912e3..49cc8c8d748e 100644
--- a/sc/source/core/tool/chgtrack.cxx
+++ b/sc/source/core/tool/chgtrack.cxx
@@ -492,12 +492,10 @@ OUString ScChangeAction::GetRefString(
                 {
                     OUString aTmp;
                     rDoc.GetName( aTmpRange.aStart.Tab(), aTmp );
-                    aBuf.append(aTmp);
-                    aBuf.append('.');
+                    aBuf.append(aTmp + ".");
                 }
-                aBuf.append(ScColToAlpha(aTmpRange.aStart.Col()));
-                aBuf.append(':');
-                aBuf.append(ScColToAlpha(aTmpRange.aEnd.Col()));
+                aBuf.append(ScColToAlpha(aTmpRange.aStart.Col())
+                    + ":" + ScColToAlpha(aTmpRange.aEnd.Col()));
             break;
             case SC_CAT_INSERT_ROWS :
             case SC_CAT_DELETE_ROWS :
@@ -505,12 +503,10 @@ OUString ScChangeAction::GetRefString(
                 {
                     OUString aTmp;
                     rDoc.GetName( aTmpRange.aStart.Tab(), aTmp );
-                    aBuf.append(aTmp);
-                    aBuf.append('.');
+                    aBuf.append(aTmp + ".");
                 }
-                aBuf.append(static_cast<sal_Int64>(aTmpRange.aStart.Row()+1));
-                aBuf.append(':');
-                aBuf.append(static_cast<sal_Int64>(aTmpRange.aEnd.Row()+1));
+                
aBuf.append(OUString::number(static_cast<sal_Int64>(aTmpRange.aStart.Row()+1))
+                    + ":" + 
OUString::number(static_cast<sal_Int64>(aTmpRange.aEnd.Row()+1)));
             break;
             default:
             {
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 5d74944cf161..c09383930e15 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -5438,8 +5438,8 @@ void ScCompiler::CreateStringFromIndex( OUStringBuffer& 
rBuffer, const FormulaTo
                 }
                 else if (mbRefConventionChartOOXML)
                 {
-                    aBuffer.append("[0]");
-                    
aBuffer.append(pConv->getSpecialSymbol(ScCompiler::Convention::SHEET_SEPARATOR));
+                    aBuffer.append("[0]"
+                        + 
OUStringChar(pConv->getSpecialSymbol(ScCompiler::Convention::SHEET_SEPARATOR)));
                 }
                 aBuffer.append(pData->GetName());
             }
diff --git a/sc/source/core/tool/formulalogger.cxx 
b/sc/source/core/tool/formulalogger.cxx
index 964067ba0f70..ac7f335facac 100644
--- a/sc/source/core/tool/formulalogger.cxx
+++ b/sc/source/core/tool/formulalogger.cxx
@@ -140,25 +140,22 @@ void FormulaLogger::GroupScope::addRefMessage(
     const ScAddress& rCellPos, const ScAddress& rRefPos, size_t nLen,
     const formula::VectorRefArray& rArray )
 {
-    OUStringBuffer aBuf;
-
     ScRange aRefRange(rRefPos);
     aRefRange.aEnd.IncRow(nLen-1);
     OUString aRangeStr = aRefRange.Format(mpImpl->mrDoc, getRefFlags(rCellPos, 
rRefPos));
-    aBuf.append(aRangeStr);
-    aBuf.append(": ");
 
+    std::u16string_view aMsg;
     if (rArray.mpNumericArray)
     {
         if (rArray.mpStringArray)
         {
             // mixture of numeric and string cells.
-            aBuf.append("numeric and string");
+            aMsg = u"numeric and string";
         }
         else
         {
             // numeric cells only.
-            aBuf.append("numeric only");
+            aMsg = u"numeric only";
         }
     }
     else
@@ -166,16 +163,16 @@ void FormulaLogger::GroupScope::addRefMessage(
         if (rArray.mpStringArray)
         {
             // string cells only.
-            aBuf.append("string only");
+            aMsg = u"string only";
         }
         else
         {
             // empty cells.
-            aBuf.append("empty");
+            aMsg = u"empty";
         }
     }
 
-    mpImpl->maMessages.push_back(aBuf.makeStringAndClear());
+    mpImpl->maMessages.push_back(aRangeStr + ": " + aMsg);
 }
 
 void FormulaLogger::GroupScope::addRefMessage(
@@ -194,35 +191,31 @@ void FormulaLogger::GroupScope::addRefMessage(
     const ScAddress& rCellPos, const ScAddress& rRefPos,
     const formula::FormulaToken& rToken )
 {
-    OUStringBuffer aBuf;
     OUString aPosStr = rRefPos.Format(getRefFlags(rCellPos, rRefPos), 
&mpImpl->mrDoc);
-    aBuf.append(aPosStr);
-    aBuf.append(": ");
-
+    std::u16string_view aMsg;
     switch (rToken.GetType())
     {
         case formula::svDouble:
-            aBuf.append("numeric value");
+            aMsg = u"numeric value";
             break;
         case formula::svString:
-            aBuf.append("string value");
+            aMsg = u"string value";
             break;
         default:
-            aBuf.append("unknown value");
+            aMsg = u"unknown value";
     }
 
-    mpImpl->maMessages.push_back(aBuf.makeStringAndClear());
+    mpImpl->maMessages.push_back(aPosStr + ": " + aMsg);
 }
 
 void FormulaLogger::GroupScope::addGroupSizeThresholdMessage( const 
ScFormulaCell& rCell )
 {
-    OUStringBuffer aBuf;
-    aBuf.append("group length below minimum threshold (");
-    aBuf.append(rCell.GetWeight());
-    aBuf.append(" < ");
-    
aBuf.append(ScInterpreter::GetGlobalConfig().mnOpenCLMinimumFormulaGroupSize);
-    aBuf.append(")");
-    mpImpl->maMessages.push_back(aBuf.makeStringAndClear());
+    OUString aBuf = "group length below minimum threshold ("
+        + OUString::number(rCell.GetWeight())
+        + " < "
+        + 
OUString::number(ScInterpreter::GetGlobalConfig().mnOpenCLMinimumFormulaGroupSize)
+        + ")";
+    mpImpl->maMessages.push_back(aBuf);
 }
 
 void FormulaLogger::GroupScope::setCalcComplete()
diff --git a/sc/source/core/tool/rangeutl.cxx b/sc/source/core/tool/rangeutl.cxx
index 6ca967c3dff3..e7314645c2b6 100644
--- a/sc/source/core/tool/rangeutl.cxx
+++ b/sc/source/core/tool/rangeutl.cxx
@@ -846,8 +846,7 @@ void ScRangeStringConverter::GetStringFromXMLRangeString( 
OUString& rString, std
                 else if (nEndCellDotPos < 0)
                 {
                     // sheet name in the end cell is omitted (e.g. 
Sheet2.A1:B2).
-                    aBuf.append('.');
-                    aBuf.append(aEndCell);
+                    aBuf.append("." + aEndCell);
                 }
                 aEndCell = aBuf.makeStringAndClear();
             }
diff --git a/sc/source/core/tool/reffind.cxx b/sc/source/core/tool/reffind.cxx
index 778d46a1de4e..ab276196d399 100644
--- a/sc/source/core/tool/reffind.cxx
+++ b/sc/source/core/tool/reffind.cxx
@@ -319,8 +319,7 @@ void ScRefFinder::ToggleRel( sal_Int32 nStartPos, sal_Int32 
nEndPos )
 
         // assemble
 
-        aResult.append(aSep);
-        aResult.append(aExpr);
+        aResult.append(aSep + aExpr);
 
         nLoopStart = nEEnd;
     }
diff --git a/sc/source/filter/dif/difexp.cxx b/sc/source/filter/dif/difexp.cxx
index bea016b03e98..40a9941a70ab 100644
--- a/sc/source/filter/dif/difexp.cxx
+++ b/sc/source/filter/dif/difexp.cxx
@@ -105,37 +105,36 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& 
rOut, ScDocument* pDoc,
     // TABLE
     OSL_ENSURE( pDoc->HasTable( nTab ), "*ScExportDif(): Table not existent!" 
);
 
-    aOS.append(pKeyTABLE);
-    aOS.append("\n0,1\n\"");
-
     pDoc->GetName( nTab, aString );
-    aOS.append(aString);
-    aOS.append("\"\n");
+    aOS.append(OUString::Concat(pKeyTABLE)
+        + "\n0,1\n\""
+        + aString
+        + "\"\n");
     rOut.WriteUnicodeOrByteText(aOS);
     aOS.setLength(0);
 
     // VECTORS
-    aOS.append(pKeyVECTORS);
-    aOS.append("\n0,");
-    aOS.append(static_cast<sal_Int32>(nNumCols));
-    aOS.append('\n');
-    aOS.append(p2DoubleQuotes_LF);
+    aOS.append(OUString::Concat(pKeyVECTORS)
+        + "\n0,"
+        + OUString::number(static_cast<sal_Int32>(nNumCols))
+        + "\n"
+        + p2DoubleQuotes_LF);
     rOut.WriteUnicodeOrByteText(aOS);
     aOS.setLength(0);
 
     // TUPLES
-    aOS.append(pKeyTUPLES);
-    aOS.append("\n0,");
-    aOS.append(static_cast<sal_Int32>(nNumRows));
-    aOS.append('\n');
-    aOS.append(p2DoubleQuotes_LF);
+    aOS.append(OUString::Concat(pKeyTUPLES)
+        + "\n0,"
+        + OUString::number(static_cast<sal_Int32>(nNumRows))
+        + "\n"
+        + p2DoubleQuotes_LF);
     rOut.WriteUnicodeOrByteText(aOS);
     aOS.setLength(0);
 
     // DATA
-    aOS.append(pKeyDATA);
-    aOS.append("\n0,0\n");
-    aOS.append(p2DoubleQuotes_LF);
+    aOS.append(OUString::Concat(pKeyDATA)
+        + "\n0,0\n"
+        + p2DoubleQuotes_LF);
     rOut.WriteUnicodeOrByteText(aOS);
     aOS.setLength(0);
 
@@ -145,9 +144,9 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, 
ScDocument* pDoc,
     for( nRowCnt = rRange.aStart.Row() ; nRowCnt <= nEndRow ; nRowCnt++ )
     {
         assert( aOS.isEmpty() && "aOS should be empty");
-        aOS.append(pSpecDataType_LF);
-        aOS.append(pKeyBOT);
-        aOS.append('\n');
+        aOS.append(OUString::Concat(pSpecDataType_LF)
+            + pKeyBOT
+            + "\n");
         rOut.WriteUnicodeOrByteText(aOS);
         aOS.setLength(0);
         for( nColCnt = rRange.aStart.Col() ; nColCnt <= nEndCol ; nColCnt++ )
@@ -162,10 +161,8 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& 
rOut, ScDocument* pDoc,
                     aOS.append(pEmptyData);
                 break;
                 case CELLTYPE_VALUE:
-                    aOS.append(pNumData);
                     aString = pDoc->GetInputString( nColCnt, nRowCnt, nTab );
-                    aOS.append(aString);
-                    aOS.append("\nV\n");
+                    aOS.append(pNumData + aString + "\nV\n");
                 break;
                 case CELLTYPE_EDIT:
                 case CELLTYPE_STRING:
@@ -177,10 +174,8 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& 
rOut, ScDocument* pDoc,
                         aOS.append(pNumDataERROR);
                     else if (aCell.getFormula()->IsValue())
                     {
-                        aOS.append(pNumData);
                         aString = pDoc->GetInputString( nColCnt, nRowCnt, nTab 
);
-                        aOS.append(aString);
-                        aOS.append("\nV\n");
+                        aOS.append(pNumData + aString + "\nV\n");
                     }
                     else
                     {
@@ -250,9 +245,9 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, 
ScDocument* pDoc,
     }
 
     assert( aOS.isEmpty() && "aOS should be empty");
-    aOS.append(pSpecDataType_LF);
-    aOS.append(pKeyEOD);
-    aOS.append('\n');
+    aOS.append(OUString::Concat(pSpecDataType_LF)
+        + pKeyEOD
+        + "\n");
     rOut.WriteUnicodeOrByteText(aOS);
     aOS.setLength(0);
 
diff --git a/sc/source/filter/excel/read.cxx b/sc/source/filter/excel/read.cxx
index cf9465a37c95..e151c7bc75c7 100644
--- a/sc/source/filter/excel/read.cxx
+++ b/sc/source/filter/excel/read.cxx
@@ -1258,10 +1258,7 @@ ErrCode ImportExcel8::Read()
             SCTAB nTab = 1;
             while ( true )
             {
-                OUStringBuffer aBuf;
-                aBuf.append("Sheet");
-                aBuf.append(static_cast<sal_Int32>(nTab++));
-                OUString sTmpName = aBuf.makeStringAndClear();
+                OUString sTmpName = "Sheet" + 
OUString::number(static_cast<sal_Int32>(nTab++));
 
                 if ( std::find(aCodeNames.begin(), aCodeNames.end(), sTmpName) 
== aCodeNames.end() ) // generated codename not found
                 {
diff --git a/sc/source/filter/excel/xecontent.cxx 
b/sc/source/filter/excel/xecontent.cxx
index 3dc1e3803d4c..25a9afffdfd1 100644
--- a/sc/source/filter/excel/xecontent.cxx
+++ b/sc/source/filter/excel/xecontent.cxx
@@ -1273,8 +1273,7 @@ OString createHexStringFromDigit(sal_uInt8 nDigit)
 
 OString createGuidStringFromInt(sal_uInt8 nGuid[16])
 {
-    OStringBuffer aBuffer;
-    aBuffer.append('{');
+    OStringBuffer aBuffer("{");
     for(size_t i = 0; i < 16; ++i)
     {
         aBuffer.append(createHexStringFromDigit(nGuid[i]));
@@ -1751,8 +1750,7 @@ XclExpDV::XclExpDV( const XclExpRoot& rRoot, sal_uInt32 
nScHandle ) :
                 {
                     bool bList = false;
                     OUStringBuffer sListBuf;
-                    OUStringBuffer sFormulaBuf;
-                    sFormulaBuf.append( '"' );
+                    OUStringBuffer sFormulaBuf("\"");
                     /*  Formula is a list of string tokens -> build the Excel 
string.
                         Data validity is BIFF8 only (important for the 
XclExpString object).
                         Excel uses the NUL character as string list separator. 
*/
@@ -1765,9 +1763,7 @@ XclExpDV::XclExpDV( const XclExpRoot& rRoot, sal_uInt32 
nScHandle ) :
                             const std::u16string_view aToken( 
o3tl::getToken(aString, 0, '\n', nStringIx ) );
                             if (aToken.find(',') != std::u16string_view::npos)
                             {
-                                sListBuf.append('"');
-                                sListBuf.append(aToken);
-                                sListBuf.append('"');
+                                sListBuf.append(OUString::Concat("\"") + 
aToken + "\"");
                                 bList = true;
                             }
                             else
diff --git a/sc/source/filter/excel/xetable.cxx 
b/sc/source/filter/excel/xetable.cxx
index e7abb111c63e..022da6cd754f 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -979,10 +979,10 @@ void XclExpFormulaCell::SaveXml( XclExpXmlStream& rStrm )
                 {
                     // calculate the cell range.
                     sFmlaCellRange.append( XclXmlUtils::ToOString(
-                                rStrm.GetRoot().GetStringBuf(), 
aMatScRange.aStart ).getStr());
-                    sFmlaCellRange.append(":");
+                                rStrm.GetRoot().GetStringBuf(), 
aMatScRange.aStart )
+                                + OString::Concat(":"));
                     sFmlaCellRange.append( XclXmlUtils::ToOString(
-                                rStrm.GetRoot().GetStringBuf(), 
aMatScRange.aEnd ).getStr());
+                                    rStrm.GetRoot().GetStringBuf(), 
aMatScRange.aEnd ));
                 }
 
                 if (    aMatScRange.aStart.Col() == GetXclPos().mnCol &&
diff --git a/sc/source/filter/excel/xipivot.cxx 
b/sc/source/filter/excel/xipivot.cxx
index 4c7ef0e25841..ac3ebaa96b7f 100644
--- a/sc/source/filter/excel/xipivot.cxx
+++ b/sc/source/filter/excel/xipivot.cxx
@@ -1100,8 +1100,7 @@ static OUString lcl_convertExcelSubtotalName(const 
OUString& rName)
         const sal_Unicode c = p[i];
         if (c == '\\')
         {
-            aBuf.append(c);
-            aBuf.append(c);
+            aBuf.append(OUStringChar(c) + OUStringChar(c));
         }
         else
             aBuf.append(c);
diff --git a/sc/source/filter/html/htmlexp.cxx 
b/sc/source/filter/html/htmlexp.cxx
index d1fd673e2bd9..98301ab7607f 100644
--- a/sc/source/filter/html/htmlexp.cxx
+++ b/sc/source/filter/html/htmlexp.cxx
@@ -139,19 +139,19 @@ void ScFormatFilterPluginImpl::ScExportHTML( SvStream& 
rStrm, const OUString& rB
 
 static OString lcl_getColGroupString(sal_Int32 nSpan, sal_Int32 nWidth)
 {
-    OStringBuffer aByteStr(OOO_STRING_SVTOOLS_HTML_colgroup);
-    aByteStr.append(' ');
+    OStringBuffer aByteStr(OString::Concat(OOO_STRING_SVTOOLS_HTML_colgroup)
+        + " ");
     if( nSpan > 1 )
     {
-        aByteStr.append(OOO_STRING_SVTOOLS_HTML_O_span);
-        aByteStr.append("=\"");
-        aByteStr.append(nSpan);
-        aByteStr.append("\" ");
+        aByteStr.append(OString::Concat(OOO_STRING_SVTOOLS_HTML_O_span)
+            + "=\""
+            + OString::number(nSpan)
+            + "\" ");
     }
-    aByteStr.append(OOO_STRING_SVTOOLS_HTML_O_width);
-    aByteStr.append("=\"");
-    aByteStr.append(nWidth);
-    aByteStr.append('"');
+    aByteStr.append(OString::Concat(OOO_STRING_SVTOOLS_HTML_O_width)
+        + "=\""
+        + OString::number(nWidth)
+        + "\"");
     return aByteStr.makeStringAndClear();
 }
 
@@ -866,8 +866,9 @@ void ScHTMLExport::WriteTables()
             if ( bTabAlignedLeft )
             {
                 // clear <TABLE ALIGN=LEFT> with <BR CLEAR=LEFT>
-                aByteStrOut.append(OOO_STRING_SVTOOLS_HTML_linebreak);
-                aByteStrOut.append(" "
+                aByteStrOut.append(
+                        OOO_STRING_SVTOOLS_HTML_linebreak
+                        " "
                         OOO_STRING_SVTOOLS_HTML_O_clear "="
                         OOO_STRING_SVTOOLS_HTML_AL_left);
                 TAG_ON_LF( aByteStrOut.makeStringAndClear().getStr() );
@@ -1080,8 +1081,8 @@ void ScHTMLExport::WriteCell( sc::ColumnBlockPosition& 
rBlockPos, SCCOL nCol, SC
 
     if ( aHTMLStyle.aBackgroundColor != aBgColor )
     {
-        aStrTD.append(" " OOO_STRING_SVTOOLS_HTML_O_bgcolor "=");
-        aStrTD.append(lcl_makeHTMLColorTriplet(aBgColor));
+        aStrTD.append(" " OOO_STRING_SVTOOLS_HTML_O_bgcolor "="
+            + lcl_makeHTMLColorTriplet(aBgColor));
     }
 
     double fVal = 0.0;
diff --git a/sc/source/filter/oox/formulabase.cxx 
b/sc/source/filter/oox/formulabase.cxx
index 764ad4750e01..8594bce693b8 100644
--- a/sc/source/filter/oox/formulabase.cxx
+++ b/sc/source/filter/oox/formulabase.cxx
@@ -1565,8 +1565,7 @@ OUString FormulaProcessorBase::generateAddress2dString( 
const BinAddress& rAddre
 OUString FormulaProcessorBase::generateApiArray( const Matrix< Any >& rMatrix )
 {
     OSL_ENSURE( !rMatrix.empty(), "FormulaProcessorBase::generateApiArray - 
missing matrix values" );
-    OUStringBuffer aBuffer;
-    aBuffer.append( API_TOKEN_ARRAY_OPEN );
+    OUStringBuffer aBuffer(( OUStringChar(API_TOKEN_ARRAY_OPEN) ));
     for( size_t nRow = 0, nHeight = rMatrix.height(); nRow < nHeight; ++nRow )
     {
         if( nRow > 0 )
diff --git a/sc/source/filter/xml/xmlexprt.cxx 
b/sc/source/filter/xml/xmlexprt.cxx
index df2d26e49d20..cbf8dcf11a0a 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -3046,13 +3046,11 @@ void writeContent(
                 Date aDate(Date::SYSTEM);
                 OUStringBuffer aBuf;
                 sal_Int32 nVal = aDate.GetYear();
-                aBuf.append(nVal);
-                aBuf.append('-');
+                aBuf.append(OUString::number(nVal) + "-");
                 nVal = aDate.GetMonth();
                 if (nVal < 10)
                     aBuf.append('0');
-                aBuf.append(nVal);
-                aBuf.append('-');
+                aBuf.append(OUString::number(nVal) + "-");
                 nVal = aDate.GetDay();
                 if (nVal < 10)
                     aBuf.append('0');
@@ -4645,42 +4643,36 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab)
                 switch(pEntry->GetOperation())
                 {
                     case ScConditionMode::Equal:
-                        aCond.append('=');
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
+                        aCond.append("=" + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
                         break;
                     case ScConditionMode::Less:
-                        aCond.append('<');
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
+                        aCond.append("<" + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
                         break;
                     case ScConditionMode::Greater:
-                        aCond.append('>');
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
+                        aCond.append(">" + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
                         break;
                     case ScConditionMode::EqLess:
-                        aCond.append("<=");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
+                        aCond.append("<=" + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
                         break;
                     case ScConditionMode::EqGreater:
-                        aCond.append(">=");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
+                        aCond.append(">=" + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
                         break;
                     case ScConditionMode::NotEqual:
-                        aCond.append("!=");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
+                        aCond.append("!=" + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
                         break;
                     case ScConditionMode::Between:
-                        aCond.append("between(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(',');
-                        aCond.append(pEntry->GetExpression(aPos, 1, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(')');
+                        aCond.append("between("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ","
+                            + pEntry->GetExpression(aPos, 1, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::NotBetween:
-                        aCond.append("not-between(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(',');
-                        aCond.append(pEntry->GetExpression(aPos, 1, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(')');
+                        aCond.append("not-between("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ","
+                            + pEntry->GetExpression(aPos, 1, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::Duplicate:
                         aCond.append("duplicate");
@@ -4689,29 +4681,29 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab)
                         aCond.append("unique");
                         break;
                     case ScConditionMode::Direct:
-                        aCond.append("formula-is(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(')');
+                        aCond.append("formula-is("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::Top10:
-                        aCond.append("top-elements(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("top-elements("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::Bottom10:
-                        aCond.append("bottom-elements(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("bottom-elements("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::TopPercent:
-                        aCond.append("top-percent(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("top-percent("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::BottomPercent:
-                        aCond.append("bottom-percent(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("bottom-percent("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::AboveAverage:
                         aCond.append("above-average");
@@ -4732,24 +4724,24 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab)
                         aCond.append("is-no-error");
                         break;
                     case ScConditionMode::BeginsWith:
-                        aCond.append("begins-with(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("begins-with("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::EndsWith:
-                        aCond.append("ends-with(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("ends-with("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::ContainsText:
-                        aCond.append("contains-text(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("contains-text("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::NotContainsText:
-                        aCond.append("not-contains-text(");
-                        aCond.append(pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF));
-                        aCond.append(")");
+                        aCond.append("not-contains-text("
+                            + pEntry->GetExpression(aPos, 0, 0, 
formula::FormulaGrammar::GRAM_ODFF)
+                            + ")");
                         break;
                     case ScConditionMode::NONE:
                         continue;
@@ -5073,9 +5065,7 @@ void ScXMLExport::WriteExternalRefCaches()
                             case svDouble:
                             {
                                 AddAttribute(XML_NAMESPACE_OFFICE, 
XML_VALUE_TYPE, XML_FLOAT);
-                                OUStringBuffer aVal;
-                                aVal.append(pToken->GetDouble());
-                                aStrVal = aVal.makeStringAndClear();
+                                aStrVal = 
OUString::number(pToken->GetDouble());
                                 AddAttribute(XML_NAMESPACE_OFFICE, XML_VALUE, 
aStrVal);
                             }
                             break;
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 8d310e1c94d5..f01c2e987b63 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -1411,8 +1411,7 @@ void ScInputHandler::ShowFuncList( const ::std::vector< 
OUString > & rFuncStrVec
 
             OUString aFuncNameStr;
             OUString aDescFuncNameStr;
-            OStringBuffer aPayload;
-            aPayload.append("[ ");
+            OStringBuffer aPayload("[ ");
             for (const OUString& rFunc : rFuncStrVec)
             {
                 if ( rFunc[rFunc.getLength()-1] == cParenthesesReplacement )
@@ -1434,16 +1433,16 @@ void ScInputHandler::ShowFuncList( const ::std::vector< 
OUString > & rFuncStrVec
                 {
                     if ( !ppFDesc->getFunctionName().isEmpty() )
                     {
-                        aPayload.append("{");
-                        aPayload.append("\"index\": ");
-                        aPayload.append(static_cast<sal_Int64>(nCurIndex));
-                        aPayload.append(", ");
-                        aPayload.append("\"signature\": \"");
-                        aPayload.append(escapeJSON(ppFDesc->getSignature()));
-                        aPayload.append("\", ");
-                        aPayload.append("\"description\": \"");
-                        aPayload.append(escapeJSON(ppFDesc->getDescription()));
-                        aPayload.append("\"}, ");
+                        aPayload.append("{"
+                            "\"index\": "
+                            + 
OString::number(static_cast<sal_Int64>(nCurIndex))
+                            + ", "
+                            "\"signature\": \""
+                            + escapeJSON(ppFDesc->getSignature())
+                            + "\", "
+                            "\"description\": \""
+                            + escapeJSON(ppFDesc->getDescription())
+                            + "\"}, ");
                     }
                 }
                 ++nCurIndex;
diff --git a/sc/source/ui/condformat/condformathelper.cxx 
b/sc/source/ui/condformat/condformathelper.cxx
index 00509b7e2559..6d1f1b1b3a27 100644
--- a/sc/source/ui/condformat/condformathelper.cxx
+++ b/sc/source/ui/condformat/condformathelper.cxx
@@ -142,23 +142,23 @@ OUString ScCondFormatHelper::GetExpression(const 
ScConditionalFormat& rFormat, c
                     ScConditionMode eMode = pEntry->GetOperation();
                     if(eMode == ScConditionMode::Direct)
                     {
-                        aBuffer.append(getTextForType(FORMULA));
-                        aBuffer.append(" ");
-                        aBuffer.append(pEntry->GetExpression(rPos, 0));
+                        aBuffer.append(getTextForType(FORMULA)
+                            + " "
+                            + pEntry->GetExpression(rPos, 0));
                     }
                     else
                     {
-                        aBuffer.append(getTextForType(CONDITION));
-                        aBuffer.append(" ");
-                        
aBuffer.append(getExpression(static_cast<sal_Int32>(eMode)));
-                        aBuffer.append(" ");
+                        aBuffer.append(getTextForType(CONDITION)
+                            + " "
+                            + getExpression(static_cast<sal_Int32>(eMode))
+                            + " ");
                         if(eMode == ScConditionMode::Between || eMode == 
ScConditionMode::NotBetween)
                         {
-                            aBuffer.append(pEntry->GetExpression(rPos, 0));
-                            aBuffer.append(" ");
-                            aBuffer.append(ScResId(STR_COND_AND));
-                            aBuffer.append(" ");
-                            aBuffer.append(pEntry->GetExpression(rPos, 1));
+                            aBuffer.append(pEntry->GetExpression(rPos, 0)
+                                + " "
+                                + ScResId(STR_COND_AND)
+                                + " "
+                                + pEntry->GetExpression(rPos, 1));
                         }
                         else if(eMode <= ScConditionMode::NotEqual || eMode >= 
ScConditionMode::BeginsWith)
                         {
@@ -179,10 +179,10 @@ OUString ScCondFormatHelper::GetExpression(const 
ScConditionalFormat& rFormat, c
                 break;
             case ScFormatEntry::Type::Date:
                 {
-                    aBuffer.append(getTextForType(DATE));
-                    aBuffer.append(" ");
                     sal_Int32 nDateEntry = 
static_cast<sal_Int32>(static_cast<const 
ScCondDateFormatEntry*>(rFormat.GetEntry(0))->GetDateType());
-                    aBuffer.append(getDateString(nDateEntry));
+                    aBuffer.append(getTextForType(DATE)
+                        + " "
+                        + getDateString(nDateEntry));
                 }
                 break;
         }
@@ -193,8 +193,7 @@ OUString ScCondFormatHelper::GetExpression(const 
ScConditionalFormat& rFormat, c
 OUString ScCondFormatHelper::GetExpression( ScCondFormatEntryType eType, 
sal_Int32 nIndex,
         std::u16string_view aStr1, std::u16string_view aStr2 )
 {
-    OUStringBuffer aBuffer(getTextForType(eType));
-    aBuffer.append(" ");
+    OUStringBuffer aBuffer(getTextForType(eType) + " ");
     if(eType == CONDITION)
     {
         // workaround missing FORMULA option in the conditions case
@@ -207,10 +206,7 @@ OUString ScCondFormatHelper::GetExpression( 
ScCondFormatEntryType eType, sal_Int
             aBuffer.append(OUString::Concat(" ") + aStr1);
             if(nIndex == 6 || nIndex == 7)
             {
-                aBuffer.append(" ");
-                aBuffer.append(ScResId(STR_COND_AND));
-                aBuffer.append(" ");
-                aBuffer.append(aStr2);
+                aBuffer.append(" " + ScResId(STR_COND_AND) + " " + aStr2);
             }
         }
     }
diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx
index 4234794ea279..20d1844e08b3 100644
--- a/sc/source/ui/dbgui/asciiopt.cxx
+++ b/sc/source/ui/dbgui/asciiopt.cxx
@@ -218,8 +218,7 @@ OUString ScAsciiOptions::WriteToString() const
         }
         if ( bMergeFieldSeps )
         {
-            aOutStr.append("/");
-            aOutStr.append(pStrMrg);
+            aOutStr.append(OUString::Concat("/") + pStrMrg);
         }
     }
 
diff --git a/sc/source/ui/dbgui/csvruler.cxx b/sc/source/ui/dbgui/csvruler.cxx
index 3af7645e2431..5f9f8354bbfe 100644
--- a/sc/source/ui/dbgui/csvruler.cxx
+++ b/sc/source/ui/dbgui/csvruler.cxx
@@ -74,8 +74,7 @@ static void save_FixedWidthList(const ScCsvSplits& rSplits)
     sal_uInt32 n = rSplits.Count();
     for (sal_uInt32 i = 0; i < n; ++i)
     {
-        sSplits.append(rSplits[i]);
-        sSplits.append(";");
+        sSplits.append(OUString::number(rSplits[i]) + ";");
     }
 
     OUString sFixedWidthLists = sSplits.makeStringAndClear();
diff --git a/sc/source/ui/dbgui/dbnamdlg.cxx b/sc/source/ui/dbgui/dbnamdlg.cxx
index 29f019b7e5db..68543eb6ce44 100644
--- a/sc/source/ui/dbgui/dbnamdlg.cxx
+++ b/sc/source/ui/dbgui/dbnamdlg.cxx
@@ -247,20 +247,17 @@ void ScDbNameDlg::Init()
 
 void ScDbNameDlg::SetInfoStrings( const ScDBData* pDBData )
 {
-    OUStringBuffer aBuf;
-    aBuf.append(aStrSource);
+    OUStringBuffer aBuf(aStrSource);
     if (pDBData)
     {
-        aBuf.append(' ');
-        aBuf.append(pDBData->GetSourceString());
+        aBuf.append(" " + pDBData->GetSourceString());
     }
     m_xFTSource->set_label(aBuf.makeStringAndClear());
 
     aBuf.append(aStrOperations);
     if (pDBData)
     {
-        aBuf.append(' ');
-        aBuf.append(pDBData->GetOperations());
+        aBuf.append(" " + pDBData->GetOperations());
     }
     m_xFTOperations->set_label(aBuf.makeStringAndClear());
 }
diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx
index f6245b4d0d6a..19911bf61a52 100644
--- a/sc/source/ui/view/cellsh3.cxx
+++ b/sc/source/ui/view/cellsh3.cxx
@@ -86,19 +86,19 @@ void lcl_lokGetWholeFunctionList()
     if (!(pFuncManager && aFuncNameOrderedSet.size()))
         return;
 
-    OStringBuffer aPayload;
-    aPayload.append("{ \"wholeList\": true, ");
-    aPayload.append("\"categories\": [ ");
+    OStringBuffer aPayload(
+        "{ \"wholeList\": true, "
+        "\"categories\": [ ");
 
     formula::FormulaHelper aHelper(pFuncManager);
     sal_uInt32 nCategoryCount = pFuncManager->getCount();
     for (sal_uInt32 i = 0; i < nCategoryCount; ++i)
     {
         OUString sCategoryName = ScFunctionMgr::GetCategoryName(i);
-        aPayload.append("{");
-        aPayload.append("\"name\": \"");
-        aPayload.append(escapeJSON(sCategoryName));
-        aPayload.append("\"}, ");
+        aPayload.append("{"
+            "\"name\": \""
+            + escapeJSON(sCategoryName)
+            + "\"}, ");
     }
     sal_Int32 nLen = aPayload.getLength();
     aPayload[nLen - 2] = ' ';
@@ -121,19 +121,19 @@ void lcl_lokGetWholeFunctionList()
             {
                 if (ppFDesc->getCategory())
                 {
-                    aPayload.append("{");
-                    aPayload.append("\"index\": ");
-                    aPayload.append(static_cast<sal_Int64>(nCurIndex));
-                    aPayload.append(", ");
-                    aPayload.append("\"category\": ");
-                    
aPayload.append(static_cast<sal_Int64>(ppFDesc->getCategory()->getNumber()));
-                    aPayload.append(", ");
-                    aPayload.append("\"signature\": \"");
-                    aPayload.append(escapeJSON(ppFDesc->getSignature()));
-                    aPayload.append("\", ");
-                    aPayload.append("\"description\": \"");
-                    aPayload.append(escapeJSON(ppFDesc->getDescription()));
-                    aPayload.append("\"}, ");
+                    aPayload.append("{"
+                        "\"index\": "
+                        + OString::number(static_cast<sal_Int64>(nCurIndex))
+                        + ", "
+                        "\"category\": "
+                        + 
OString::number(static_cast<sal_Int64>(ppFDesc->getCategory()->getNumber()))
+                        + ", "
+                        "\"signature\": \""
+                        + escapeJSON(ppFDesc->getSignature())
+                        + "\", "
+                        "\"description\": \""
+                        + escapeJSON(ppFDesc->getDescription())
+                        + "\"}, ");
                 }
             }
         }
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index 1eaea7037361..9720bf7f4f9f 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -1354,14 +1354,12 @@ static OUString lcl_replaceMemberNameInSubtotal(const 
OUString& rSubtotal, std::
         else if (c == '\\')
         {
             // Escape a backslash character.
-            aWordBuf.append(c);
-            aWordBuf.append(c);
+            aWordBuf.append(OUStringChar(c) + OUStringChar(c));
         }
         else if (c == '?')
         {
             // A literal '?' must be escaped with a backslash ('\');
-            aWordBuf.append('\\');
-            aWordBuf.append(c);
+            aWordBuf.append("\\" + OUStringChar(c));
         }
         else
             aWordBuf.append(c);
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index c25ba587ae03..76eb77b18e15 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -2457,19 +2457,15 @@ void ScGridWindow::MouseButtonUp( const MouseEvent& 
rMEvt )
                     if (pStr)
                         aBuf.append(*pStr);
 
-                    aBuf.append('#');
-                    aBuf.append(aExtInfo.maTabName);
-                    aBuf.append('.');
                     OUString aRefCalcA1(aTempAddr.Format(ScRefFlags::ADDR_ABS, 
nullptr, formula::FormulaGrammar::CONV_OOO));
-                    aBuf.append(aRefCalcA1);
+                    aBuf.append("#" + aExtInfo.maTabName + "." + aRefCalcA1);
                     ScGlobal::OpenURL(aBuf.makeStringAndClear(), aTarget);
                 }
                 else
                 {
                     // Internal reference.
-                    aBuf.append('#');
                     OUString 
aUrlCalcA1(aTempAddr.Format(ScRefFlags::ADDR_ABS_3D, &rDoc, 
formula::FormulaGrammar::CONV_OOO));
-                    aBuf.append(aUrlCalcA1);
+                    aBuf.append("#" + aUrlCalcA1);
                     ScGlobal::OpenURL(aBuf.makeStringAndClear(), aTarget, 
isTiledRendering);
                 }
             }
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index 8be670e2834f..ec0458b8e19a 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -874,9 +874,7 @@ OUString ScViewFunc::GetAutoSumFormula( const ScRangeList& 
rRangeList, bool bSub
     ScCompiler aComp(rDoc, rAddr, aArray, rDoc.GetGrammar());
     OUStringBuffer aBuf;
     aComp.CreateStringFromTokenArray(aBuf);
-    OUString aFormula = aBuf.makeStringAndClear();
-    aBuf.append('=');
-    aBuf.append(aFormula);
+    aBuf.insert(0, "=");
     return aBuf.makeStringAndClear();
 }
 

Reply via email to