diff --git a/Charts/Core/vtkPlot.cxx b/Charts/Core/vtkPlot.cxx
index 76174a9fb3c283a0dfdb8dfb10a8ec2a2cfee6bc..e4fc4e32b623f1958fd5dcc635bc3a123f2163ed 100644
--- a/Charts/Core/vtkPlot.cxx
+++ b/Charts/Core/vtkPlot.cxx
@@ -501,8 +501,8 @@ void vtkPlot::SetInputData(vtkTable* table)
 void vtkPlot::SetInputData(
   vtkTable* table, const vtkStdString& xColumn, const vtkStdString& yColumn)
 {
-  vtkDebugMacro(<< "Setting input, X column = \"" << xColumn.c_str() << "\", "
-                << "Y column = \"" << yColumn.c_str() << "\"");
+  vtkDebugMacro(<< "Setting input, X column = \"" << xColumn << "\", "
+                << "Y column = \"" << yColumn << "\"");
 
   this->Data->SetInputData(table);
   this->Data->SetInputArrayToProcess(
diff --git a/Charts/Core/vtkPlotBag.cxx b/Charts/Core/vtkPlotBag.cxx
index 65df0df925620b8451c22e4642b27974d4456026..71f9063e87b222feabd3c81c02a31a5e7eca2e2b 100644
--- a/Charts/Core/vtkPlotBag.cxx
+++ b/Charts/Core/vtkPlotBag.cxx
@@ -407,8 +407,8 @@ void vtkPlotBag::SetInputData(vtkTable* table)
 void vtkPlotBag::SetInputData(
   vtkTable* table, const vtkStdString& yColumn, const vtkStdString& densityColumn)
 {
-  vtkDebugMacro(<< "Setting input, Y column = \"" << yColumn.c_str() << "\", "
-                << "Density column = \"" << densityColumn.c_str() << "\"");
+  vtkDebugMacro(<< "Setting input, Y column = \"" << yColumn << "\", "
+                << "Density column = \"" << densityColumn << "\"");
 
   if (table->GetColumnByName(densityColumn.c_str())->GetNumberOfTuples() !=
     table->GetColumnByName(yColumn.c_str())->GetNumberOfTuples())
@@ -425,10 +425,10 @@ void vtkPlotBag::SetInputData(
 void vtkPlotBag::SetInputData(vtkTable* table, const vtkStdString& xColumn,
   const vtkStdString& yColumn, const vtkStdString& densityColumn)
 {
-  vtkDebugMacro(<< "Setting input, X column = \"" << xColumn.c_str() << "\", "
-                << "Y column = \"" << yColumn.c_str() << "\""
+  vtkDebugMacro(<< "Setting input, X column = \"" << xColumn << "\", "
+                << "Y column = \"" << yColumn << "\""
                 << "\", "
-                << "Density column = \"" << densityColumn.c_str() << "\"");
+                << "Density column = \"" << densityColumn << "\"");
 
   this->Data->SetInputData(table);
   this->Data->SetInputArrayToProcess(
diff --git a/Common/Color/Testing/Cxx/TestColorSeries.cxx b/Common/Color/Testing/Cxx/TestColorSeries.cxx
index 78f85dfb84d4d6fe04f87e9e58bb57a7e50015e5..0a7515d0935fd49b96e44d832cfd51b020697c87 100644
--- a/Common/Color/Testing/Cxx/TestColorSeries.cxx
+++ b/Common/Color/Testing/Cxx/TestColorSeries.cxx
@@ -148,8 +148,8 @@ int TestColorSeries(int argc, char* argv[])
   if (palName != expected)
   {
     vtkGenericWarningMacro(<< "Failure: Palette copy-on-write: name should have been "
-                           << "\"" << expected.c_str() << "\" but was "
-                           << "\"" << palName.c_str() << "\" instead.");
+                           << "\"" << expected << "\" but was "
+                           << "\"" << palName << "\" instead.");
     valResult = vtkTesting::FAILED;
   }
   if (palettes->GetNumberOfColors() != 10)
diff --git a/Common/Core/Testing/Cxx/TestArrayUniqueValueDetection.cxx b/Common/Core/Testing/Cxx/TestArrayUniqueValueDetection.cxx
index 4bc4c3a4dc615b776488c9dee13685b907a73462..66b2a05d892bf8d5e56bc51978444c2f2f1a132f 100644
--- a/Common/Core/Testing/Cxx/TestArrayUniqueValueDetection.cxx
+++ b/Common/Core/Testing/Cxx/TestArrayUniqueValueDetection.cxx
@@ -265,7 +265,7 @@ static bool CheckUniques(
     cout << "  comp " << c << " (" << numUniques << "): ";
     for (int n = 0; n <= uniques->GetMaxId(); ++n)
     {
-      cout << (n > 0 ? ", " : " ") << uniques->GetVariantValue(n).ToString().c_str();
+      cout << (n > 0 ? ", " : " ") << uniques->GetVariantValue(n).ToString();
     }
     cout << endl;
     if (uniqueSizeBds[2 * c] > numUniques || uniqueSizeBds[2 * c + 1] < numUniques)
@@ -282,7 +282,7 @@ static bool CheckUniques(
     cout << "  tuples (" << numUniques << "): ";
     for (int n = 0; n <= uniques->GetMaxId(); ++n)
     {
-      cout << (n > 0 && n % nc == 0 ? ", " : " ") << uniques->GetVariantValue(n).ToString().c_str();
+      cout << (n > 0 && n % nc == 0 ? ", " : " ") << uniques->GetVariantValue(n).ToString();
     }
     cout << endl;
     if (uniqueSizeBds[2 * nc] > numUniques || uniqueSizeBds[2 * nc + 1] < numUniques)
diff --git a/Common/Core/vtkGarbageCollector.cxx b/Common/Core/vtkGarbageCollector.cxx
index 4bf09c87c7a86b4d127d82458682c72832755b21..c65a320d696b111e73f529224c66d1f9ca9bf4c9 100644
--- a/Common/Core/vtkGarbageCollector.cxx
+++ b/Common/Core/vtkGarbageCollector.cxx
@@ -618,7 +618,7 @@ void vtkGarbageCollectorImpl::Report(vtkObjectBase* obj, void* ptr, const char*
       std::ostringstream msg;
       msg << "Report: " << current->GetClassName() << "(" << current << ") " << (desc ? desc : "")
           << " -> " << obj->GetClassName() << "(" << obj << ")";
-      vtkDebugMacro(<< msg.str().c_str());
+      vtkDebugMacro(<< msg.str());
     }
 
     // Forward call to the internal implementation.
@@ -718,7 +718,7 @@ void vtkGarbageCollectorImpl::PrintComponent(ComponentType* c)
       msg << "\n  " << obj->GetClassName() << "(" << obj << ")"
           << " with " << count << " external " << ((count == 1) ? "reference" : "references");
     }
-    vtkDebugMacro(<< msg.str().c_str());
+    vtkDebugMacro(<< msg.str());
   }
 }
 #else
diff --git a/Common/Core/vtkVariant.cxx b/Common/Core/vtkVariant.cxx
index 9b6c713996a8af77bd02aec9a604271f345590ba..4b198f405f3ebc3487bce817178a7c65c3156aa1 100644
--- a/Common/Core/vtkVariant.cxx
+++ b/Common/Core/vtkVariant.cxx
@@ -975,7 +975,7 @@ ostream& operator<<(ostream& os, const vtkVariant& val)
     case VTK_STRING:
       if (val.Data.String)
       {
-        os << "\"" << val.Data.String->c_str() << "\"";
+        os << "\"" << *val.Data.String << "\"";
       }
       else
       {
diff --git a/Common/DataModel/vtkDataAssembly.cxx b/Common/DataModel/vtkDataAssembly.cxx
index c44864162c6f846d62ccf0b36765efafbd7391a6..6ff4cd260a4f7853782d7658cdd40440fc217b61 100644
--- a/Common/DataModel/vtkDataAssembly.cxx
+++ b/Common/DataModel/vtkDataAssembly.cxx
@@ -574,7 +574,7 @@ std::vector<int> vtkDataAssembly::AddNodes(const std::vector<std::string>& names
   {
     if (!vtkDataAssembly::IsNodeNameValid(name.c_str()))
     {
-      vtkErrorMacro("Invalid name specified '" << name.c_str() << "'.");
+      vtkErrorMacro("Invalid name specified '" << name << "'.");
       return std::vector<int>{};
     }
   }
diff --git a/Common/ExecutionModel/vtkExecutive.cxx b/Common/ExecutionModel/vtkExecutive.cxx
index 59d296b3e380dd4073ca99aba9eacf86db16f84d..e8ea9c8c5506b235e5bb9bdd8178ab9ded30131a 100644
--- a/Common/ExecutionModel/vtkExecutive.cxx
+++ b/Common/ExecutionModel/vtkExecutive.cxx
@@ -757,7 +757,7 @@ int vtkExecutive::CheckAlgorithm(const char* method, vtkInformation* request)
                     << " invoked during another request.  "
                        "Returning failure to algorithm "
                     << this->Algorithm->GetObjectDescription() << " for the recursive request:\n"
-                    << rqmsg.str().c_str());
+                    << rqmsg.str());
     }
     else
     {
diff --git a/Examples/ImageProcessing/Cxx/ImageBenchmark.cxx b/Examples/ImageProcessing/Cxx/ImageBenchmark.cxx
index 33c32e7a4066656339f939acd68f7f8316c14e7e..c991e5a96ccf145a1d463caab8b407047e6a8761 100644
--- a/Examples/ImageProcessing/Cxx/ImageBenchmark.cxx
+++ b/Examples/ImageProcessing/Cxx/ImageBenchmark.cxx
@@ -1395,7 +1395,7 @@ int IMAGE_BENCHMARK_MAIN(int argc, char* argv[])
     std::string opt = argv[argi];
     if (opt.compare(0, 1, "-") != 0)
     {
-      std::cerr << "expected an option, got " << opt.c_str() << "\n";
+      std::cerr << "expected an option, got " << opt << "\n";
     }
     if (opt == "-h" || opt == "-help" || opt == "--help")
     {
diff --git a/Filters/Core/vtkArrayRename.cxx b/Filters/Core/vtkArrayRename.cxx
index aaaee4f4ff7761902bc89a7ec263b4788e7d91e2..31ddc3594cd2898a79990f13d8773aa536985619 100644
--- a/Filters/Core/vtkArrayRename.cxx
+++ b/Filters/Core/vtkArrayRename.cxx
@@ -136,7 +136,7 @@ const char* vtkArrayRename::GetArrayNewName(int attributeType, int idx)
 
   vtkDebugMacro(<< "Returning " << originalName << " "
                 << vtkDataObject::GetAssociationTypeAsString(attributeType) << " array name as "
-                << this->ArrayMapping[attributeType][originalName].c_str());
+                << this->ArrayMapping[attributeType][originalName]);
 
   return this->ArrayMapping[attributeType][originalName].c_str();
 }
diff --git a/Filters/Extraction/vtkExtractBlockUsingDataAssembly.cxx b/Filters/Extraction/vtkExtractBlockUsingDataAssembly.cxx
index bd724b870cb9484a452df02d99bc0f05df5cad42..83b56235d8885691a165c77e1eeb542c240f56e5 100644
--- a/Filters/Extraction/vtkExtractBlockUsingDataAssembly.cxx
+++ b/Filters/Extraction/vtkExtractBlockUsingDataAssembly.cxx
@@ -367,6 +367,6 @@ void vtkExtractBlockUsingDataAssembly::PrintSelf(ostream& os, vtkIndent indent)
   os << indent << "Selectors: " << endl;
   for (const auto& selector : this->Internals->Selectors)
   {
-    os << indent.GetNextIndent() << selector.c_str() << endl;
+    os << indent.GetNextIndent() << selector << endl;
   }
 }
diff --git a/Filters/General/vtkMultiThreshold.cxx b/Filters/General/vtkMultiThreshold.cxx
index 304ddbaae2c3648e36eb55d195cda77a38601e5b..0e6cba434522a70abdc50e13f0d9eaad6789bdac 100644
--- a/Filters/General/vtkMultiThreshold.cxx
+++ b/Filters/General/vtkMultiThreshold.cxx
@@ -193,7 +193,7 @@ void vtkMultiThreshold::Interval::PrintNode(ostream& os)
   }
   else
   {
-    os << this->Norm.Name.c_str();
+    os << this->Norm.Name;
   }
   if (this->Norm.Component < 0)
   {
diff --git a/Filters/General/vtkSplitColumnComponents.cxx b/Filters/General/vtkSplitColumnComponents.cxx
index 768837d99747f9686a8126d9444bec4cb7cf93b5..82f6785783d20cf698f9a07d774f807785c1092b 100644
--- a/Filters/General/vtkSplitColumnComponents.cxx
+++ b/Filters/General/vtkSplitColumnComponents.cxx
@@ -255,12 +255,12 @@ std::string vtkSplitColumnComponents::GetComponentLabel(vtkAbstractArray* array,
       break;
 
     case NAMES_WITH_PARENS:
-      stream << array->GetName() << " (" << vtkGetComponentName(array, component_no).c_str() << ")";
+      stream << array->GetName() << " (" << vtkGetComponentName(array, component_no) << ")";
       break;
 
     case NAMES_WITH_UNDERSCORES:
     default:
-      stream << array->GetName() << "_" << vtkGetComponentName(array, component_no).c_str();
+      stream << array->GetName() << "_" << vtkGetComponentName(array, component_no);
       break;
   }
   return stream.str();
diff --git a/Filters/Hybrid/vtkFacetReader.cxx b/Filters/Hybrid/vtkFacetReader.cxx
index 381573260c96c21c39eb22765a1f821cd80ee420..18382dae2e7d86c490dcc733601f88161aba60be 100644
--- a/Filters/Hybrid/vtkFacetReader.cxx
+++ b/Filters/Hybrid/vtkFacetReader.cxx
@@ -200,7 +200,7 @@ int vtkFacetReader::RequestData(vtkInformation* vtkNotUsed(request),
       error = 1;
       break;
     }
-    vtkDebugMacro("Part name: " << partName.c_str());
+    vtkDebugMacro("Part name: " << partName);
 
     // Read cell/point index and geometry information including the number of
     // points. cell/point index for points is always 0
diff --git a/Filters/Parallel/vtkExtractCTHPart.cxx b/Filters/Parallel/vtkExtractCTHPart.cxx
index b3ea95216d62ca4f1400f2c709e8889626592a81..a21141d873162299ca36d7922e05007c812595bd 100644
--- a/Filters/Parallel/vtkExtractCTHPart.cxx
+++ b/Filters/Parallel/vtkExtractCTHPart.cxx
@@ -1326,7 +1326,7 @@ void vtkExtractCTHPart::PrintSelf(ostream& os, vtkIndent indent)
   for (it = this->Internals->VolumeArrayNames.begin();
        it != this->Internals->VolumeArrayNames.end(); ++it)
   {
-    os << i2 << it->c_str() << endl;
+    os << i2 << *it << endl;
   }
   os << indent << "VolumeFractionSurfaceValue: " << this->VolumeFractionSurfaceValue << endl;
   os << indent << "Capping: " << this->Capping << endl;
diff --git a/Filters/ParallelGeometry/Testing/Cxx/TestPolyhedralMeshDistributedDataFilter.cxx b/Filters/ParallelGeometry/Testing/Cxx/TestPolyhedralMeshDistributedDataFilter.cxx
index 3554682c5858dc3936421c28ca60bf328249fd59..e1b85f2982f5d2c2c2e09fec598d52801489cf63 100644
--- a/Filters/ParallelGeometry/Testing/Cxx/TestPolyhedralMeshDistributedDataFilter.cxx
+++ b/Filters/ParallelGeometry/Testing/Cxx/TestPolyhedralMeshDistributedDataFilter.cxx
@@ -13,7 +13,7 @@ void AbortTest(vtkMPIController* controller, const std::string& message)
 {
   if (controller->GetLocalProcessId() == 0)
   {
-    vtkErrorWithObjectMacro(nullptr, << message.c_str());
+    vtkErrorWithObjectMacro(nullptr, << message);
   }
   controller->Finalize();
   exit(EXIT_FAILURE);
diff --git a/Filters/ParallelStatistics/Testing/Cxx/TestRandomPMomentStatisticsMPI.cxx b/Filters/ParallelStatistics/Testing/Cxx/TestRandomPMomentStatisticsMPI.cxx
index 9886826f7d670b5d921c3c246583f5cebba55f21..83c85ae2e20f46bb3792cb7aac0e17ad61d79c3f 100644
--- a/Filters/ParallelStatistics/Testing/Cxx/TestRandomPMomentStatisticsMPI.cxx
+++ b/Filters/ParallelStatistics/Testing/Cxx/TestRandomPMomentStatisticsMPI.cxx
@@ -425,8 +425,8 @@ void RandomSampleStatistics(vtkMultiProcessController* controller, void* arg)
         } // if ( relDev )
         else
         {
-          vtkGenericWarningMacro("Column " << relDevName.str().c_str() << " on process " << myRank
-                                           << " is not of type double.");
+          vtkGenericWarningMacro(
+            "Column " << relDevName.str() << " on process " << myRank << " is not of type double.");
           *(args->retVal) = 1;
         }
 
@@ -434,7 +434,7 @@ void RandomSampleStatistics(vtkMultiProcessController* controller, void* arg)
       else
       {
         vtkGenericWarningMacro(
-          "No assessment column called " << relDevName.str().c_str() << " on process " << myRank);
+          "No assessment column called " << relDevName.str() << " on process " << myRank);
         *(args->retVal) = 1;
       }
     } // for ( int c = 0; c < nNormal; ++ c )
diff --git a/Filters/Sources/vtkHyperTreeGridSource.cxx b/Filters/Sources/vtkHyperTreeGridSource.cxx
index 39373321e5506ad921b73f7fec1f27c92f4098dc..6cbade6429c2c170773151c7db673ac893b9f8e6 100644
--- a/Filters/Sources/vtkHyperTreeGridSource.cxx
+++ b/Filters/Sources/vtkHyperTreeGridSource.cxx
@@ -768,9 +768,9 @@ int vtkHyperTreeGridSource::InitializeFromStringDescriptor()
           // Verify that level descriptor cardinality matches expected value
           if (descriptor.str().size() != nNextLevel)
           {
-            vtkErrorMacro(<< "String level descriptor " << descriptor.str().c_str()
-                          << " has cardinality " << descriptor.str().size()
-                          << " which is not expected value of " << nNextLevel);
+            vtkErrorMacro(<< "String level descriptor " << descriptor.str() << " has cardinality "
+                          << descriptor.str().size() << " which is not expected value of "
+                          << nNextLevel);
 
             return 0;
           }
@@ -829,7 +829,7 @@ int vtkHyperTreeGridSource::InitializeFromStringDescriptor()
   // Verify and append last level string
   if (descriptor.str().size() != nNextLevel)
   {
-    vtkErrorMacro(<< "String level descriptor " << descriptor.str().c_str() << " has cardinality "
+    vtkErrorMacro(<< "String level descriptor " << descriptor.str() << " has cardinality "
                   << descriptor.str().size() << " which is not expected value of " << nNextLevel);
 
     return 0;
diff --git a/Filters/Sources/vtkParametricFunctionSource.cxx b/Filters/Sources/vtkParametricFunctionSource.cxx
index f7dc5ad0a6eeb25401b51704699a359ea1c0ed2c..3f0efba317a792a27a95dc7238c4881126a4d5eb 100644
--- a/Filters/Sources/vtkParametricFunctionSource.cxx
+++ b/Filters/Sources/vtkParametricFunctionSource.cxx
@@ -630,7 +630,7 @@ void vtkParametricFunctionSource::PrintSelf(ostream& os, vtkIndent indent)
     default:
       s = "Unknown scalar mode.";
   }
-  os << indent << "Scalar Mode: " << s.c_str() << "\n";
+  os << indent << "Scalar Mode: " << s << "\n";
   os << indent << "GenerateTextureCoordinates:" << (this->GenerateTextureCoordinates ? "On" : "Off")
      << "\n";
   os << indent << "Output Points Precision: " << this->OutputPointsPrecision << "\n";
diff --git a/Filters/Statistics/vtkAutoCorrelativeStatistics.cxx b/Filters/Statistics/vtkAutoCorrelativeStatistics.cxx
index 0d0a259e33556de878d4cbe0dc4aae242489c329..a3f41652e6dbd545974e16d1bad71670b1549f42 100644
--- a/Filters/Statistics/vtkAutoCorrelativeStatistics.cxx
+++ b/Filters/Statistics/vtkAutoCorrelativeStatistics.cxx
@@ -281,8 +281,7 @@ void vtkAutoCorrelativeStatistics::Learn(
     vtkStdString varName = *it;
     if (!inData->GetColumnByName(varName))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << varName.c_str() << ". Ignoring it.");
+      vtkWarningMacro("InData table does not have a column " << varName << ". Ignoring it.");
       continue;
     }
 
diff --git a/Filters/Statistics/vtkCorrelativeStatistics.cxx b/Filters/Statistics/vtkCorrelativeStatistics.cxx
index a8d853cbf204067ae76015f5851142e0f7d7b228..fe0455550b17a44125beeb21fd0afbcc35fbb067 100644
--- a/Filters/Statistics/vtkCorrelativeStatistics.cxx
+++ b/Filters/Statistics/vtkCorrelativeStatistics.cxx
@@ -268,8 +268,7 @@ void vtkCorrelativeStatistics::Learn(
     vtkStdString colX = *it;
     if (!inData->GetColumnByName(colX))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << colX.c_str() << ". Ignoring this pair.");
+      vtkWarningMacro("InData table does not have a column " << colX << ". Ignoring this pair.");
       continue;
     }
 
@@ -277,8 +276,7 @@ void vtkCorrelativeStatistics::Learn(
     vtkStdString colY = *it;
     if (!inData->GetColumnByName(colY))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << colY.c_str() << ". Ignoring this pair.");
+      vtkWarningMacro("InData table does not have a column " << colY << ". Ignoring this pair.");
       continue;
     }
 
@@ -551,7 +549,7 @@ void vtkCorrelativeStatistics::Test(
     if (!inData->GetColumnByName(varNameX))
     {
       vtkWarningMacro(
-        "InData table does not have a column " << varNameX.c_str() << ". Ignoring this pair.");
+        "InData table does not have a column " << varNameX << ". Ignoring this pair.");
       continue;
     }
 
@@ -560,7 +558,7 @@ void vtkCorrelativeStatistics::Test(
     if (!inData->GetColumnByName(varNameY))
     {
       vtkWarningMacro(
-        "InData table does not have a column " << varNameY.c_str() << ". Ignoring this pair.");
+        "InData table does not have a column " << varNameY << ". Ignoring this pair.");
       continue;
     }
 
@@ -573,7 +571,7 @@ void vtkCorrelativeStatistics::Test(
     if (r >= nRowPrim)
     {
       vtkWarningMacro("Incomplete input: model does not have a row for pair"
-        << varNameX.c_str() << ", " << varNameY.c_str() << ". Cannot test.");
+        << varNameX << ", " << varNameY << ". Cannot test.");
       continue;
     }
 
@@ -582,8 +580,8 @@ void vtkCorrelativeStatistics::Test(
     {
       vtkWarningMacro("Inconsistent input: input data has "
         << nRowData << " rows but primary model has cardinality "
-        << primaryTab->GetValueByName(r, "Cardinality").ToDouble() << " for pair "
-        << varNameX.c_str() << ", " << varNameY.c_str() << ". Cannot test.");
+        << primaryTab->GetValueByName(r, "Cardinality").ToDouble() << " for pair " << varNameX
+        << ", " << varNameY << ". Cannot test.");
       continue;
     }
 
diff --git a/Filters/Statistics/vtkDescriptiveStatistics.cxx b/Filters/Statistics/vtkDescriptiveStatistics.cxx
index c14156e4bd0ce192b84d60f7b54829b2dced9b39..919e1c2087aadeadb024a4a882efe7b43b485c9a 100644
--- a/Filters/Statistics/vtkDescriptiveStatistics.cxx
+++ b/Filters/Statistics/vtkDescriptiveStatistics.cxx
@@ -416,8 +416,7 @@ void vtkDescriptiveStatistics::Learn(
     vtkStdString varName = *it;
     if (!inData->GetColumnByName(varName))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << varName.c_str() << ". Ignoring it.");
+      vtkWarningMacro("InData table does not have a column " << varName << ". Ignoring it.");
       continue;
     }
 
@@ -733,8 +732,7 @@ void vtkDescriptiveStatistics::Test(
     vtkStdString varName = *it;
     if (!inData->GetColumnByName(varName))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << varName.c_str() << ". Ignoring it.");
+      vtkWarningMacro("InData table does not have a column " << varName << ". Ignoring it.");
       continue;
     }
 
@@ -747,7 +745,7 @@ void vtkDescriptiveStatistics::Test(
     if (r >= nRowPrim)
     {
       vtkWarningMacro(
-        "Incomplete input: model does not have a row " << varName.c_str() << ". Cannot test.");
+        "Incomplete input: model does not have a row " << varName << ". Cannot test.");
       continue;
     }
 
diff --git a/Filters/Statistics/vtkHighestDensityRegionsStatistics.cxx b/Filters/Statistics/vtkHighestDensityRegionsStatistics.cxx
index 306c037826f49aaee726a9eec04149cb62f388f8..103295c82f486fa17d155b38242ca8edcbd65fb4 100644
--- a/Filters/Statistics/vtkHighestDensityRegionsStatistics.cxx
+++ b/Filters/Statistics/vtkHighestDensityRegionsStatistics.cxx
@@ -118,8 +118,7 @@ void vtkHighestDensityRegionsStatistics::Learn(
     const vtkStdString& colY = *colIt;
     if (!inData->GetColumnByName(colY.c_str()))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << colY.c_str() << ". Ignoring this pair.");
+      vtkWarningMacro("InData table does not have a column " << colY << ". Ignoring this pair.");
       continue;
     }
 
@@ -127,8 +126,7 @@ void vtkHighestDensityRegionsStatistics::Learn(
     const vtkStdString& colX = *colIt;
     if (!inData->GetColumnByName(colX.c_str()))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << colX.c_str() << ". Ignoring this pair.");
+      vtkWarningMacro("InData table does not have a column " << colX << ". Ignoring this pair.");
       continue;
     }
 
diff --git a/Filters/Statistics/vtkKMeansStatistics.cxx b/Filters/Statistics/vtkKMeansStatistics.cxx
index 1b77b9568b75d939eb3cd97c34d5ce66d3caafe7..1a59c6be776bf54abbacc512db75216fea2a9290 100644
--- a/Filters/Statistics/vtkKMeansStatistics.cxx
+++ b/Filters/Statistics/vtkKMeansStatistics.cxx
@@ -191,7 +191,7 @@ int vtkKMeansStatistics::InitializeDataAndClusterCenters(vtkTable* inParameters,
         }
         else if (dArr != inData->GetRowData()->GetGhostArray())
         {
-          vtkWarningMacro("Skipping requested column \"" << colItr->c_str() << "\".");
+          vtkWarningMacro("Skipping requested column \"" << *colItr << "\".");
         }
       }
       newClusterElements->DeepCopy(condensedTable);
diff --git a/Filters/Statistics/vtkMultiCorrelativeStatistics.cxx b/Filters/Statistics/vtkMultiCorrelativeStatistics.cxx
index 1f0e2b2f3fa0db1a67c5b9e2d91fab6ddd669b0e..b60644037784b413cd3802c7875914bac9bc45ab 100644
--- a/Filters/Statistics/vtkMultiCorrelativeStatistics.cxx
+++ b/Filters/Statistics/vtkMultiCorrelativeStatistics.cxx
@@ -909,8 +909,7 @@ bool vtkMultiCorrelativeAssessFunctor::Initialize(
     vtkDataArray* arr = vtkArrayDownCast<vtkDataArray>(inData->GetColumnByName(colname.c_str()));
     if (!arr)
     {
-      vtkGenericWarningMacro(
-        "Multicorrelative input data needs a \"" << colname.c_str() << "\" column");
+      vtkGenericWarningMacro("Multicorrelative input data needs a \"" << colname << "\" column");
       return false;
     }
     cols.push_back(arr);
@@ -918,8 +917,7 @@ bool vtkMultiCorrelativeAssessFunctor::Initialize(
       vtkArrayDownCast<vtkDoubleArray>(reqModel->GetColumnByName(colname.c_str()));
     if (!dar)
     {
-      vtkGenericWarningMacro(
-        "Multicorrelative request needs a \"" << colname.c_str() << "\" column");
+      vtkGenericWarningMacro("Multicorrelative request needs a \"" << colname << "\" column");
       return false;
     }
     chol.push_back(dar->GetPointer(1));
diff --git a/Filters/Statistics/vtkOrderStatistics.cxx b/Filters/Statistics/vtkOrderStatistics.cxx
index ec89d849878894f39a249afc1e61741fb9d7328a..52187fff3c15a37c47c14286d4af51143944eea8 100644
--- a/Filters/Statistics/vtkOrderStatistics.cxx
+++ b/Filters/Statistics/vtkOrderStatistics.cxx
@@ -199,7 +199,7 @@ void vtkOrderStatistics::Learn(
     vtkStdString col = *it;
     if (!inData->GetColumnByName(col))
     {
-      vtkWarningMacro("InData table does not have a column " << col.c_str() << ". Ignoring it.");
+      vtkWarningMacro("InData table does not have a column " << col << ". Ignoring it.");
       continue;
     }
 
@@ -237,7 +237,7 @@ void vtkOrderStatistics::Learn(
     }
     else
     {
-      vtkWarningMacro("Unsupported data type for column " << col.c_str() << ". Ignoring it.");
+      vtkWarningMacro("Unsupported data type for column " << col << ". Ignoring it.");
 
       continue;
     }
@@ -359,7 +359,7 @@ void vtkOrderStatistics::Learn(
     } // else if ( vals->IsA("vtkVariantArray") )
     else
     {
-      vtkWarningMacro("Unsupported data type for column " << col.c_str() << ". Ignoring it.");
+      vtkWarningMacro("Unsupported data type for column " << col << ". Ignoring it.");
 
       continue;
     } // else
@@ -690,8 +690,8 @@ void vtkOrderStatistics::Derive(vtkMultiBlockDataSet* inMeta)
     } // else if ( vals->IsA("vtkVariantArray") )
     else
     {
-      vtkWarningMacro("Unsupported data type for column "
-        << varName.c_str() << ". Cannot calculate quantiles for it.");
+      vtkWarningMacro(
+        "Unsupported data type for column " << varName << ". Cannot calculate quantiles for it.");
 
       continue;
     } // else
@@ -775,8 +775,7 @@ void vtkOrderStatistics::Test(vtkTable* inData, vtkMultiBlockDataSet* inMeta, vt
     vtkStdString varName = *it;
     if (!inData->GetColumnByName(varName))
     {
-      vtkWarningMacro(
-        "InData table does not have a column " << varName.c_str() << ". Ignoring it.");
+      vtkWarningMacro("InData table does not have a column " << varName << ". Ignoring it.");
       continue;
     }
 
@@ -785,7 +784,7 @@ void vtkOrderStatistics::Test(vtkTable* inData, vtkMultiBlockDataSet* inMeta, vt
     if (!quantCol)
     {
       vtkWarningMacro(
-        "Quantile table table does not have a column " << varName.c_str() << ". Ignoring it.");
+        "Quantile table table does not have a column " << varName << ". Ignoring it.");
       continue;
     }
 
@@ -809,8 +808,7 @@ void vtkOrderStatistics::Test(vtkTable* inData, vtkMultiBlockDataSet* inMeta, vt
     // Sanity check: verify that empirical CDF = 1
     if (fabs(sum - 1.) > 1.e-6)
     {
-      vtkWarningMacro(
-        "Incorrect empirical CDF for variable:" << varName.c_str() << ". Ignoring it.");
+      vtkWarningMacro("Incorrect empirical CDF for variable:" << varName << ". Ignoring it.");
 
       continue;
     }
@@ -1033,8 +1031,7 @@ void vtkOrderStatistics::SelectAssessFunctor(
   vtkAbstractArray* quantiles = quantileTab->GetColumnByName(varName);
   if (!quantiles)
   {
-    vtkWarningMacro(
-      "Quantile table table does not have a column " << varName.c_str() << ". Ignoring it.");
+    vtkWarningMacro("Quantile table table does not have a column " << varName << ". Ignoring it.");
     return;
   }
 
@@ -1054,7 +1051,7 @@ void vtkOrderStatistics::SelectAssessFunctor(
   else
   {
     vtkWarningMacro("Unsupported (data,quantiles) type for column "
-      << varName.c_str() << ": data type is " << vals->GetClassName() << " and quantiles type is "
+      << varName << ": data type is " << vals->GetClassName() << " and quantiles type is "
       << quantiles->GetClassName() << ". Ignoring it.");
   }
 }
diff --git a/Filters/Statistics/vtkStatisticsAlgorithm.cxx b/Filters/Statistics/vtkStatisticsAlgorithm.cxx
index b5d6700b55db47870178c481ed9014dc28159b54..1aefee71b6eb6e9bbaf593636189938735570ffd 100644
--- a/Filters/Statistics/vtkStatisticsAlgorithm.cxx
+++ b/Filters/Statistics/vtkStatisticsAlgorithm.cxx
@@ -317,8 +317,8 @@ void vtkStatisticsAlgorithm::Assess(
       // If requested column does not exist in input, ignore request
       if (!inData->GetColumnByName(varName))
       {
-        vtkWarningMacro("InData table does not have a column "
-          << varName.c_str() << ". Ignoring request containing it.");
+        vtkWarningMacro(
+          "InData table does not have a column " << varName << ". Ignoring request containing it.");
 
         invalidRequest = true;
         break;
diff --git a/GUISupport/Qt/QVTKTableModelAdapter.cxx b/GUISupport/Qt/QVTKTableModelAdapter.cxx
index 6b955407a5523ee2c1cc209e879a6b98bc701141..f1c55d8d7e78e19eec66a453be839b635a5d1f88 100644
--- a/GUISupport/Qt/QVTKTableModelAdapter.cxx
+++ b/GUISupport/Qt/QVTKTableModelAdapter.cxx
@@ -59,7 +59,7 @@ vtkAbstractArray* QVTKTableModelAdapter::NewArray(const QVariant& type)
         QString("Unsupported QVariant::Type '%1' in QVTKTableModelAdapter::NewArray - "
                 "default to returning vtkDoubleArray::New()")
           .arg(type.typeName());
-      vtkGenericWarningMacro(<< warning.toStdString().c_str());
+      vtkGenericWarningMacro(<< warning.toStdString());
 
       return vtkDoubleArray::New();
   }
diff --git a/GUISupport/QtSQL/Testing/Cxx/TestQtSQLDatabase.cxx b/GUISupport/QtSQL/Testing/Cxx/TestQtSQLDatabase.cxx
index 099f100194daff7c72edb555cdc453b7d4a90c47..51834caf84dcaed8a3101ec0b178e14702c75bbb 100644
--- a/GUISupport/QtSQL/Testing/Cxx/TestQtSQLDatabase.cxx
+++ b/GUISupport/QtSQL/Testing/Cxx/TestQtSQLDatabase.cxx
@@ -200,7 +200,7 @@ int TestQtSQLDatabase(int argc, char* argv[])
       {
         cerr << ", ";
       }
-      cerr << query->DataValue(field).ToString().c_str();
+      cerr << query->DataValue(field).ToString();
     }
     cerr << endl;
   }
@@ -229,7 +229,7 @@ int TestQtSQLDatabase(int argc, char* argv[])
       {
         cerr << ", ";
       }
-      cerr << va->GetValue(field).ToString().c_str();
+      cerr << va->GetValue(field).ToString();
     }
     cerr << endl;
   }
diff --git a/IO/AMR/vtkAMREnzoReaderInternal.cxx b/IO/AMR/vtkAMREnzoReaderInternal.cxx
index 172f2e8b6cf2d7f961b8722bd51b7769e584ab11..3550a0329b2d3f9d58a747880738172953f75ee8 100644
--- a/IO/AMR/vtkAMREnzoReaderInternal.cxx
+++ b/IO/AMR/vtkAMREnzoReaderInternal.cxx
@@ -429,7 +429,7 @@ int vtkEnzoReaderInternal::LoadAttribute(const char* attribute, int blockIdx)
   if (attrIndx < 0)
   {
     vtkGenericWarningMacro(
-      "Attribute (" << attribute << ") data does not exist in file " << blckFile.c_str());
+      "Attribute (" << attribute << ") data does not exist in file " << blckFile);
     H5Gclose(rootIndx);
     H5Fclose(fileIndx);
     return 0;
@@ -590,8 +590,7 @@ void vtkEnzoReaderInternal::ReadBlockStructures()
   vtksys::ifstream stream(this->HierarchyFileName.c_str());
   if (!stream)
   {
-    vtkGenericWarningMacro(
-      "Invalid hierarchy file name: " << this->HierarchyFileName.c_str() << endl);
+    vtkGenericWarningMacro("Invalid hierarchy file name: " << this->HierarchyFileName << endl);
     return;
   }
 
@@ -723,7 +722,7 @@ void vtkEnzoReaderInternal::ReadBlockStructures()
       stream >> theStr; // '='
       stream >> szName;
 
-      //      std::cout << "szname: " << szName.c_str() << std::endl;
+      //      std::cout << "szname: " << szName << std::endl;
       //      std::cout.flush();
       tmpBlk.BlockFileName = this->DirectoryName + "/" + GetEnzoMajorFileName(szName.c_str());
 
@@ -752,7 +751,7 @@ void vtkEnzoReaderInternal::ReadBlockStructures()
       if (static_cast<int>(this->Blocks.size()) != tmpBlk.Index)
       {
         vtkGenericWarningMacro("The blocks in the hierarchy file "
-          << this->HierarchyFileName.c_str() << " are currently expected to be "
+          << this->HierarchyFileName << " are currently expected to be "
           << " listed in order." << endl);
         return;
       }
@@ -819,7 +818,7 @@ void vtkEnzoReaderInternal::ReadGeneralParameters()
   vtksys::ifstream stream(this->MajorFileName.c_str());
   if (!stream)
   {
-    vtkGenericWarningMacro("Invalid parameter file " << this->MajorFileName.c_str() << endl);
+    vtkGenericWarningMacro("Invalid parameter file " << this->MajorFileName << endl);
     return;
   }
 
@@ -910,7 +909,7 @@ void vtkEnzoReaderInternal::GetAttributeNames()
 
   if (fileIndx < 0)
   {
-    vtkGenericWarningMacro("Failed to open HDF5 grid file " << blckFile.c_str());
+    vtkGenericWarningMacro("Failed to open HDF5 grid file " << blckFile);
     return;
   }
 
diff --git a/IO/CGNS/Testing/Cxx/TestCGNSReader.cxx b/IO/CGNS/Testing/Cxx/TestCGNSReader.cxx
index 7ffcd3444dc62442deb730dc0192bd9fd2889f75..716abc4ec4934352bbad29dbf20f29de70c7feaa 100644
--- a/IO/CGNS/Testing/Cxx/TestCGNSReader.cxx
+++ b/IO/CGNS/Testing/Cxx/TestCGNSReader.cxx
@@ -57,7 +57,7 @@ int TestCGNSReader(int argc, char* argv[])
   std::string mixed = fname ? fname : "";
   delete[] fname;
 
-  cout << "Opening " << mixed.c_str() << endl;
+  cout << "Opening " << mixed << endl;
   vtkNew<vtkCGNSReader> mixedReader;
   mixedReader->SetFileName(mixed.c_str());
   mixedReader->Update();
@@ -73,7 +73,7 @@ int TestCGNSReader(int argc, char* argv[])
   std::string nfacen = fname ? fname : "";
   delete[] fname;
 
-  cout << "Opening " << nfacen.c_str() << endl;
+  cout << "Opening " << nfacen << endl;
   vtkNew<vtkCGNSReader> nfacenReader;
   nfacenReader->SetFileName(nfacen.c_str());
   nfacenReader->Update();
diff --git a/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyFields.cxx b/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyFields.cxx
index 8e619b3f9814eb5ebe95559a96e5ccc29f14082a..7946af21eba02e5fb60b22c83efeaef564ba6eec 100644
--- a/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyFields.cxx
+++ b/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyFields.cxx
@@ -73,7 +73,7 @@ int TestCGNSUnsteadyFields(int argc, char* argv[])
   std::string fields = fname ? fname : "";
   delete[] fname;
 
-  cout << "Opening " << fields.c_str() << endl;
+  cout << "Opening " << fields << endl;
   vtkNew<vtkCGNSReader> fieldsReader;
   fieldsReader->SetFileName(fields.c_str());
   fieldsReader->Update();
diff --git a/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyGrid.cxx b/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyGrid.cxx
index 9054ddf6c2a4e86c8bf2808dba514c1ce3aee19f..bb7b5793e0bdc4895b94cca6ba760262547dcc28 100644
--- a/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyGrid.cxx
+++ b/IO/CGNS/Testing/Cxx/TestCGNSUnsteadyGrid.cxx
@@ -73,7 +73,7 @@ int TestCGNSUnsteadyGrid(int argc, char* argv[])
   std::string grids = fname ? fname : "";
   delete[] fname;
 
-  cout << "Opening " << grids.c_str() << endl;
+  cout << "Opening " << grids << endl;
   vtkNew<vtkCGNSReader> gridsReader;
   gridsReader->SetFileName(grids.c_str());
   gridsReader->Update();
diff --git a/IO/CGNS/vtkCGNSReader.cxx b/IO/CGNS/vtkCGNSReader.cxx
index 95683ba6d793cc3ea28e34ab1adca5ead3f75c86..e3a8688124f8d7da85acd01a2bb418d64cbefb12 100644
--- a/IO/CGNS/vtkCGNSReader.cxx
+++ b/IO/CGNS/vtkCGNSReader.cxx
@@ -1191,7 +1191,7 @@ int vtkCGNSReader::vtkPrivate::readSolution(const std::string& solutionNameStr,
     vtkErrorWithObjectMacro(self,
       "Mismatch in number of cells and number of values "
       "being read from Solution '"
-        << solutionNameStr.c_str()
+        << solutionNameStr
         << "'. "
            "Skipping reading. Please report as a bug.");
     return CG_ERROR;
@@ -1201,7 +1201,7 @@ int vtkCGNSReader::vtkPrivate::readSolution(const std::string& solutionNameStr,
     vtkErrorWithObjectMacro(self,
       "Mismatch in number of points and number of values "
       "being read from Solution '"
-        << solutionNameStr.c_str()
+        << solutionNameStr
         << "'. "
            "Skipping reading. Please report as a bug.");
     return CG_ERROR;
diff --git a/IO/CONVERGECFD/vtkCONVERGECFDReader.cxx b/IO/CONVERGECFD/vtkCONVERGECFDReader.cxx
index 20f5bedfbdab1096f54de0dc02a3f8726d0b4aa4..6b83c26c26a0f9b020bee5b6a342938dbea98147 100644
--- a/IO/CONVERGECFD/vtkCONVERGECFDReader.cxx
+++ b/IO/CONVERGECFD/vtkCONVERGECFDReader.cxx
@@ -1262,8 +1262,8 @@ void vtkCONVERGECFDReader::ReadTimeSteps(vtkInformation* outInfo)
   vtkNew<vtkDirectory> dir;
   if (!dir->Open(path.c_str()))
   {
-    vtkWarningMacro(<< "Could not open directory " << originalFile.c_str()
-                    << " is supposed to be from (" << path.c_str() << ")");
+    vtkWarningMacro(<< "Could not open directory " << originalFile << " is supposed to be from ("
+                    << path << ")");
     fileNames.emplace_back(originalFile);
     return;
   }
diff --git a/IO/EnSight/vtkEnSight6BinaryReader.cxx b/IO/EnSight/vtkEnSight6BinaryReader.cxx
index 7d0a36ba5b3ba09983436bb19021c18dd376df35..768ab236519d2ed1fd42cda46b099199dcc5e745 100644
--- a/IO/EnSight/vtkEnSight6BinaryReader.cxx
+++ b/IO/EnSight/vtkEnSight6BinaryReader.cxx
@@ -151,7 +151,7 @@ int vtkEnSight6BinaryReader::ReadGeometryFile(
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to geometry file: " << sfilename);
   }
   else
   {
@@ -160,7 +160,7 @@ int vtkEnSight6BinaryReader::ReadGeometryFile(
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -737,7 +737,7 @@ int vtkEnSight6BinaryReader::ReadMeasuredGeometryFile(
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to measured geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to measured geometry file: " << sfilename);
   }
   else
   {
@@ -746,7 +746,7 @@ int vtkEnSight6BinaryReader::ReadMeasuredGeometryFile(
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     points->Delete();
     pd->Delete();
     return 0;
@@ -890,7 +890,7 @@ int vtkEnSight6BinaryReader::ReadScalarsPerNode(const char* fileName, const char
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to scalar per node file: " << sfilename.c_str());
+    vtkDebugMacro("full path to scalar per node file: " << sfilename);
   }
   else
   {
@@ -899,7 +899,7 @@ int vtkEnSight6BinaryReader::ReadScalarsPerNode(const char* fileName, const char
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -1146,7 +1146,7 @@ int vtkEnSight6BinaryReader::ReadVectorsPerNode(const char* fileName, const char
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to vector per node file: " << sfilename.c_str());
+    vtkDebugMacro("full path to vector per node file: " << sfilename);
   }
   else
   {
@@ -1155,7 +1155,7 @@ int vtkEnSight6BinaryReader::ReadVectorsPerNode(const char* fileName, const char
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -1354,7 +1354,7 @@ int vtkEnSight6BinaryReader::ReadTensorsPerNode(const char* fileName, const char
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to tensor symm per node file: " << sfilename.c_str());
+    vtkDebugMacro("full path to tensor symm per node file: " << sfilename);
   }
   else
   {
@@ -1363,7 +1363,7 @@ int vtkEnSight6BinaryReader::ReadTensorsPerNode(const char* fileName, const char
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -1521,7 +1521,7 @@ int vtkEnSight6BinaryReader::ReadScalarsPerElement(const char* fileName, const c
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to scalar per element file: " << sfilename.c_str());
+    vtkDebugMacro("full path to scalar per element file: " << sfilename);
   }
   else
   {
@@ -1530,7 +1530,7 @@ int vtkEnSight6BinaryReader::ReadScalarsPerElement(const char* fileName, const c
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -1713,7 +1713,7 @@ int vtkEnSight6BinaryReader::ReadVectorsPerElement(const char* fileName, const c
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to vector per element file: " << sfilename.c_str());
+    vtkDebugMacro("full path to vector per element file: " << sfilename);
   }
   else
   {
@@ -1722,7 +1722,7 @@ int vtkEnSight6BinaryReader::ReadVectorsPerElement(const char* fileName, const c
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -1900,7 +1900,7 @@ int vtkEnSight6BinaryReader::ReadTensorsPerElement(const char* fileName, const c
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to tensor per element file: " << sfilename.c_str());
+    vtkDebugMacro("full path to tensor per element file: " << sfilename);
   }
   else
   {
@@ -1909,7 +1909,7 @@ int vtkEnSight6BinaryReader::ReadTensorsPerElement(const char* fileName, const c
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
diff --git a/IO/EnSight/vtkEnSight6Reader.cxx b/IO/EnSight/vtkEnSight6Reader.cxx
index c7ea6ac3e5498f1c843eafd6f216ccec28769156..1542d42204916b394d452ee4b69bef8e157d1a29 100644
--- a/IO/EnSight/vtkEnSight6Reader.cxx
+++ b/IO/EnSight/vtkEnSight6Reader.cxx
@@ -189,7 +189,7 @@ int vtkEnSight6Reader::ReadGeometryFile(
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to geometry file: " << sfilename);
   }
   else
   {
@@ -199,7 +199,7 @@ int vtkEnSight6Reader::ReadGeometryFile(
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -371,7 +371,7 @@ int vtkEnSight6Reader::ReadMeasuredGeometryFile(
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to measured geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to measured geometry file: " << sfilename);
   }
   else
   {
@@ -381,7 +381,7 @@ int vtkEnSight6Reader::ReadMeasuredGeometryFile(
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -489,7 +489,7 @@ int vtkEnSight6Reader::ReadScalarsPerNode(const char* fileName, const char* desc
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to scalar per node file: " << sfilename.c_str());
+    vtkDebugMacro("full path to scalar per node file: " << sfilename);
   }
   else
   {
@@ -499,7 +499,7 @@ int vtkEnSight6Reader::ReadScalarsPerNode(const char* fileName, const char* desc
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -732,7 +732,7 @@ int vtkEnSight6Reader::ReadVectorsPerNode(const char* fileName, const char* desc
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to vector per node file: " << sfilename.c_str());
+    vtkDebugMacro("full path to vector per node file: " << sfilename);
   }
   else
   {
@@ -742,7 +742,7 @@ int vtkEnSight6Reader::ReadVectorsPerNode(const char* fileName, const char* desc
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -940,7 +940,7 @@ int vtkEnSight6Reader::ReadTensorsPerNode(const char* fileName, const char* desc
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to tensor symm per node file: " << sfilename.c_str());
+    vtkDebugMacro("full path to tensor symm per node file: " << sfilename);
   }
   else
   {
@@ -950,7 +950,7 @@ int vtkEnSight6Reader::ReadTensorsPerNode(const char* fileName, const char* desc
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -1095,7 +1095,7 @@ int vtkEnSight6Reader::ReadScalarsPerElement(const char* fileName, const char* d
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to scalars per element file: " << sfilename.c_str());
+    vtkDebugMacro("full path to scalars per element file: " << sfilename);
   }
   else
   {
@@ -1105,7 +1105,7 @@ int vtkEnSight6Reader::ReadScalarsPerElement(const char* fileName, const char* d
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -1268,7 +1268,7 @@ int vtkEnSight6Reader::ReadVectorsPerElement(const char* fileName, const char* d
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to vector per element file: " << sfilename.c_str());
+    vtkDebugMacro("full path to vector per element file: " << sfilename);
   }
   else
   {
@@ -1278,7 +1278,7 @@ int vtkEnSight6Reader::ReadVectorsPerElement(const char* fileName, const char* d
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -1440,7 +1440,7 @@ int vtkEnSight6Reader::ReadTensorsPerElement(const char* fileName, const char* d
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to tensor per element file: " << sfilename.c_str());
+    vtkDebugMacro("full path to tensor per element file: " << sfilename);
   }
   else
   {
@@ -1450,7 +1450,7 @@ int vtkEnSight6Reader::ReadTensorsPerElement(const char* fileName, const char* d
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
diff --git a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
index 3fd0df4219bbfabad873691dcf5c31a3902a73e3..9ec5d9445759b094a633ffd478fdf02253141c06 100644
--- a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+++ b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
@@ -353,7 +353,7 @@ int vtkEnSightGoldBinaryReader::InitializeFile(const char* fileName)
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to geometry file: " << sfilename);
   }
   else
   {
@@ -362,7 +362,7 @@ int vtkEnSightGoldBinaryReader::InitializeFile(const char* fileName)
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -1251,7 +1251,7 @@ int vtkEnSightGoldBinaryReader::ReadMeasuredGeometryFile(
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to measured geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to measured geometry file: " << sfilename);
   }
   else
   {
@@ -1260,7 +1260,7 @@ int vtkEnSightGoldBinaryReader::ReadMeasuredGeometryFile(
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return 0;
   }
 
@@ -1403,7 +1403,7 @@ bool vtkEnSightGoldBinaryReader::OpenVariableFile(const char* fileName, const ch
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to variable (" << type << ") file: " << sfilename.c_str());
+    vtkDebugMacro("full path to variable (" << type << ") file: " << sfilename);
   }
   else
   {
@@ -1412,7 +1412,7 @@ bool vtkEnSightGoldBinaryReader::OpenVariableFile(const char* fileName, const ch
 
   if (this->OpenFile(sfilename.c_str()) == 0)
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     return false;
   }
 
diff --git a/IO/EnSight/vtkEnSightGoldReader.cxx b/IO/EnSight/vtkEnSightGoldReader.cxx
index 7e498041933847ba562298070c78168bb9aebd71..f60c0ae6228bd3c66f795ae2c0a2c8610d17bf5f 100644
--- a/IO/EnSight/vtkEnSightGoldReader.cxx
+++ b/IO/EnSight/vtkEnSightGoldReader.cxx
@@ -186,7 +186,7 @@ int vtkEnSightGoldReader::ReadGeometryFile(
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to geometry file: " << sfilename);
   }
   else
   {
@@ -196,7 +196,7 @@ int vtkEnSightGoldReader::ReadGeometryFile(
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -385,7 +385,7 @@ int vtkEnSightGoldReader::ReadMeasuredGeometryFile(
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to measured geometry file: " << sfilename.c_str());
+    vtkDebugMacro("full path to measured geometry file: " << sfilename);
   }
   else
   {
@@ -395,7 +395,7 @@ int vtkEnSightGoldReader::ReadMeasuredGeometryFile(
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
@@ -517,7 +517,7 @@ bool vtkEnSightGoldReader::OpenVariableFile(const char* fileName, const char* va
       sfilename += "/";
     }
     sfilename += fileName;
-    vtkDebugMacro("full path to variable (" << variableType << ") file: " << sfilename.c_str());
+    vtkDebugMacro("full path to variable (" << variableType << ") file: " << sfilename);
   }
   else
   {
@@ -527,7 +527,7 @@ bool vtkEnSightGoldReader::OpenVariableFile(const char* fileName, const char* va
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return false;
diff --git a/IO/EnSight/vtkEnSightMasterServerReader.cxx b/IO/EnSight/vtkEnSightMasterServerReader.cxx
index bc6597360ae2290f6eb240b1e13b1f3557bd8872..64369d479ab6a9fc7bc428c7e0354819c82418b2 100644
--- a/IO/EnSight/vtkEnSightMasterServerReader.cxx
+++ b/IO/EnSight/vtkEnSightMasterServerReader.cxx
@@ -109,7 +109,7 @@ int vtkEnSightMasterServerReader::DetermineFileName(int piece)
       sfilename += "/";
     }
     sfilename += this->CaseFileName;
-    vtkDebugMacro("full path to case file: " << sfilename.c_str());
+    vtkDebugMacro("full path to case file: " << sfilename);
   }
   else
   {
@@ -119,7 +119,7 @@ int vtkEnSightMasterServerReader::DetermineFileName(int piece)
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
diff --git a/IO/EnSight/vtkEnSightReader.cxx b/IO/EnSight/vtkEnSightReader.cxx
index a76ad1ee8a3e5417aab69c12c8d5fe61f747a4d2..50d6e09578a3399c04394bba111aafef5052390c 100644
--- a/IO/EnSight/vtkEnSightReader.cxx
+++ b/IO/EnSight/vtkEnSightReader.cxx
@@ -1291,7 +1291,7 @@ int vtkEnSightReader::ReadCaseFile()
       sfilename += "/";
     }
     sfilename += this->CaseFileName;
-    vtkDebugMacro("full path to case file: " << sfilename.c_str());
+    vtkDebugMacro("full path to case file: " << sfilename);
   }
   else
   {
@@ -1301,7 +1301,7 @@ int vtkEnSightReader::ReadCaseFile()
   this->IS = new vtksys::ifstream(sfilename.c_str(), ios::in);
   if (this->IS->fail())
   {
-    vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+    vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return 0;
diff --git a/IO/EnSight/vtkGenericEnSightReader.cxx b/IO/EnSight/vtkGenericEnSightReader.cxx
index e83ccc0a6813239c35ac479127cf8891220c1ec3..53a67a1ebfef675a6f93fe18994ee7fa9ba9d7ed 100644
--- a/IO/EnSight/vtkGenericEnSightReader.cxx
+++ b/IO/EnSight/vtkGenericEnSightReader.cxx
@@ -320,7 +320,7 @@ int vtkGenericEnSightReader::DetermineEnSightVersion(int quiet)
       sfilename += "/";
     }
     sfilename += this->CaseFileName;
-    vtkDebugMacro("full path to case file: " << sfilename.c_str());
+    vtkDebugMacro("full path to case file: " << sfilename);
   }
   else
   {
@@ -331,7 +331,7 @@ int vtkGenericEnSightReader::DetermineEnSightVersion(int quiet)
   if (this->IS->fail())
   {
     if (!quiet)
-      vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+      vtkErrorMacro("Unable to open file: " << sfilename);
     delete this->IS;
     this->IS = nullptr;
     return -1;
@@ -424,7 +424,7 @@ int vtkGenericEnSightReader::DetermineEnSightVersion(int quiet)
                 sfilename += "/";
               }
               sfilename += fileName;
-              vtkDebugMacro("full path to geometry file: " << sfilename.c_str());
+              vtkDebugMacro("full path to geometry file: " << sfilename);
             }
             else
             {
@@ -438,7 +438,7 @@ int vtkGenericEnSightReader::DetermineEnSightVersion(int quiet)
             {
               if (!quiet)
               {
-                vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+                vtkErrorMacro("Unable to open file: " << sfilename);
                 vtkWarningMacro("Assuming binary file.");
               }
               this->IFile = nullptr;
@@ -538,7 +538,7 @@ int vtkGenericEnSightReader::DetermineEnSightVersion(int quiet)
             sfilename += "/";
           }
           sfilename += fileName;
-          vtkDebugMacro("full path to geometry file: " << sfilename.c_str());
+          vtkDebugMacro("full path to geometry file: " << sfilename);
         }
         else
         {
@@ -552,7 +552,7 @@ int vtkGenericEnSightReader::DetermineEnSightVersion(int quiet)
         {
           if (!quiet)
           {
-            vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+            vtkErrorMacro("Unable to open file: " << sfilename);
             vtkWarningMacro("Assuming binary file.");
           }
           this->IFile = nullptr;
@@ -1122,7 +1122,7 @@ int vtkGenericEnSightReader::ReplaceWildcards(char* fileName, int timeSet, int f
       sfilename += "/";
     }
     sfilename += this->CaseFileName;
-    vtkDebugMacro("full path to case file: " << sfilename.c_str());
+    vtkDebugMacro("full path to case file: " << sfilename);
   }
   else
   {
diff --git a/IO/Exodus/vtkExodusIIReader.cxx b/IO/Exodus/vtkExodusIIReader.cxx
index 4943da032a5a838c7ccf8d47c9aaeceb9333175d..8e66109f6bbaaca1e0871888f02d3f7eaf534280 100644
--- a/IO/Exodus/vtkExodusIIReader.cxx
+++ b/IO/Exodus/vtkExodusIIReader.cxx
@@ -217,20 +217,20 @@ static void printBlock(
   while (obj_types[b] >= 0 && obj_types[b] != btyp)
     ++b;
   const char* btypnam = objtype_names[b];
-  os << indent << btypnam << " " << binfo.Id << " \"" << binfo.Name.c_str() << "\" (" << binfo.Size
+  os << indent << btypnam << " " << binfo.Id << " \"" << binfo.Name << "\" (" << binfo.Size
      << ")\n";
   os << indent << "    FileOffset: " << binfo.FileOffset << "\n";
   os << indent << "    CachedConn: " << binfo.CachedConnectivity << " (" << binfo.Status << ")\n";
   os << indent << "    PointMap: " << binfo.PointMap.size() << " entries, "
      << "ReversePointMap: " << binfo.ReversePointMap.size() << " entries\n";
-  os << indent << "    Type: " << binfo.TypeName.c_str() << "\n";
+  os << indent << "    Type: " << binfo.TypeName << "\n";
   os << indent << "    Bounds per entry, Node: " << binfo.BdsPerEntry[0]
      << " Edge: " << binfo.BdsPerEntry[1] << " Face: " << binfo.BdsPerEntry[2] << "\n";
   os << indent << "    Attributes (" << binfo.AttributesPerEntry << "):";
   int a;
   for (a = 0; a < binfo.AttributesPerEntry; ++a)
   {
-    os << " \"" << binfo.AttributeNames[a].c_str() << "\"(" << binfo.AttributeStatus[a] << ")";
+    os << " \"" << binfo.AttributeNames[a] << "\"(" << binfo.AttributeStatus[a] << ")";
   }
   os << "\n";
 }
@@ -242,7 +242,7 @@ static void printSet(
   while (obj_types[s] >= 0 && obj_types[s] != styp)
     ++s;
   const char* stypnam = objtype_names[s];
-  os << indent << stypnam << " " << sinfo.Id << " \"" << sinfo.Name.c_str() << "\" (" << sinfo.Size
+  os << indent << stypnam << " " << sinfo.Id << " \"" << sinfo.Name << "\" (" << sinfo.Size
      << ")\n";
   os << indent << "    FileOffset: " << sinfo.FileOffset << "\n";
   os << indent << "    CachedConn: " << sinfo.CachedConnectivity << " (" << sinfo.Status << ")\n";
@@ -258,7 +258,7 @@ static void printMap(
   while (obj_types[m] >= 0 && obj_types[m] != mtyp)
     ++m;
   const char* mtypnam = objtype_names[m];
-  os << indent << mtypnam << " " << minfo.Id << " \"" << minfo.Name.c_str() << "\" (" << minfo.Size
+  os << indent << mtypnam << " " << minfo.Id << " \"" << minfo.Name << "\" (" << minfo.Size
      << ")\n";
   os << indent << "    Status: " << minfo.Status << "\n";
 }
@@ -267,7 +267,7 @@ static void printArray(
   ostream& os, vtkIndent indent, int atyp, vtkExodusIIReaderPrivate::ArrayInfoType& ainfo)
 {
   (void)atyp;
-  os << indent << "    " << ainfo.Name.c_str() << " [" << ainfo.Status << "] ( " << ainfo.Components
+  os << indent << "    " << ainfo.Name << " [" << ainfo.Status << "] ( " << ainfo.Components
      << " = { ";
   os << ainfo.OriginalIndices[0] << " \"" << ainfo.OriginalNames[0] << "\"";
   int i;
@@ -445,7 +445,7 @@ void vtkExodusIIReaderPrivate::GlomArrayNames(
   for ( varVec::iterator it = this->ArrayInfo[objtyp].begin(); it != this->ArrayInfo[objtyp].end();
   ++ it )
     {
-    cout << "Name: \"" << it->Name.c_str() << "\" (" << it->Components << ")\n";
+    cout << "Name: \"" << it->Name << "\" (" << it->Components << ")\n";
     }
     */
 
@@ -579,8 +579,7 @@ int vtkExodusIIReaderPrivate::AssembleOutputPointArrays(
     vtkDataArray* src = this->GetCacheOrRead(key);
     if (!src)
     {
-      vtkDebugMacro(
-        "Unable to read point array " << ai->Name.c_str() << " at time step " << timeStep);
+      vtkDebugMacro("Unable to read point array " << ai->Name << " at time step " << timeStep);
       status = 0;
       continue;
     }
@@ -912,7 +911,7 @@ int vtkExodusIIReaderPrivate::AssembleOutputGlobalArrays(
     vtkDataArray* temporalData = this->GetCacheOrRead(tdKey);
     if (!temporalData)
     {
-      vtkDebugMacro("Unable to read array " << ai->Name.c_str());
+      vtkDebugMacro("Unable to read array " << ai->Name);
       status = 0;
       continue;
     }
@@ -1000,8 +999,7 @@ int vtkExodusIIReaderPrivate::AssembleOutputPointMaps(
       this->GetCacheOrRead(vtkExodusIICacheKey(-1, vtkExodusIIReader::NODE_MAP, 0, midx)));
     if (!src)
     {
-      vtkDebugMacro(
-        "Unable to read point map array \"" << mi->Name.c_str() << "\" (" << midx << ")");
+      vtkDebugMacro("Unable to read point map array \"" << mi->Name << "\" (" << midx << ")");
       status = 0;
       continue;
     }
@@ -1470,8 +1468,7 @@ void vtkExodusIIReaderPrivate::InsertSetCellCopies(
         vtkExodusIICacheKey(-1, this->GetBlockConnTypeFromBlockType(otyp), bnum, 0)));
       if (!nconn)
       {
-        vtkErrorMacro(
-          "Unable to read block \"" << binfop->Name.c_str() << "\" (" << binfop->Id << ")");
+        vtkErrorMacro("Unable to read block \"" << binfop->Name << "\" (" << binfop->Id << ")");
         break;
       }
       nodeconn = nconn->GetPointer(0);
@@ -1644,7 +1641,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
       if (ex_get_var(exoid, key.Time + 1, static_cast<ex_entity_type>(key.ObjectType),
             ainfop->OriginalIndices[0], 0, arr->GetNumberOfTuples(), arr->GetVoidPointer(0)) < 0)
       {
-        vtkErrorMacro("Could not read nodal result variable " << ainfop->Name.c_str() << ".");
+        vtkErrorMacro("Could not read nodal result variable " << ainfop->Name << ".");
         arr->Delete();
         arr = nullptr;
       }
@@ -1663,8 +1660,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
         if (ex_get_var(exoid, key.Time + 1, static_cast<ex_entity_type>(key.ObjectType),
               ainfop->OriginalIndices[c], 0, arr->GetNumberOfTuples(), tmpVal[c].data()) < 0)
         {
-          vtkErrorMacro(
-            "Could not read nodal result variable " << ainfop->OriginalNames[c].c_str() << ".");
+          vtkErrorMacro("Could not read nodal result variable " << ainfop->OriginalNames[c] << ".");
           arr->Delete();
           arr = nullptr;
           return nullptr;
@@ -1725,8 +1721,8 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
         if (ex_get_var_time(exoid, EX_GLOBAL, ainfop->OriginalIndices[c], key.ObjectId, 1,
               this->GetNumberOfTimeSteps(), tmpVal[c].data()) < 0)
         {
-          vtkErrorMacro("Could not read temporal global result variable "
-            << ainfop->OriginalNames[c].c_str() << ".");
+          vtkErrorMacro(
+            "Could not read temporal global result variable " << ainfop->OriginalNames[c] << ".");
           arr->Delete();
           arr = nullptr;
           return nullptr;
@@ -1747,7 +1743,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
     else if (ex_get_var_time(exoid, EX_GLOBAL, ainfop->OriginalIndices[0], key.ObjectId, 1,
                this->GetNumberOfTimeSteps(), arr->GetVoidPointer(0)) < 0)
     {
-      vtkErrorMacro("Could not read global result variable " << ainfop->Name.c_str() << ".");
+      vtkErrorMacro("Could not read global result variable " << ainfop->Name << ".");
       arr->Delete();
       arr = nullptr;
     }
@@ -1769,7 +1765,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
       if (ex_get_var_time(exoid, EX_NODAL, ainfop->OriginalIndices[0], key.ObjectId, 1,
             this->GetNumberOfTimeSteps(), arr->GetVoidPointer(0)) < 0)
       {
-        vtkErrorMacro("Could not read nodal result variable " << ainfop->Name.c_str() << ".");
+        vtkErrorMacro("Could not read nodal result variable " << ainfop->Name << ".");
         arr->Delete();
         arr = nullptr;
       }
@@ -1788,8 +1784,8 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
         if (ex_get_var_time(exoid, EX_NODAL, ainfop->OriginalIndices[c], key.ObjectId, 1,
               this->GetNumberOfTimeSteps(), tmpVal[c].data()) < 0)
         {
-          vtkErrorMacro("Could not read temporal nodal result variable "
-            << ainfop->OriginalNames[c].c_str() << ".");
+          vtkErrorMacro(
+            "Could not read temporal nodal result variable " << ainfop->OriginalNames[c] << ".");
           arr->Delete();
           arr = nullptr;
           return nullptr;
@@ -1822,7 +1818,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
       if (ex_get_var_time(exoid, EX_ELEM_BLOCK, ainfop->OriginalIndices[0], key.ObjectId, 1,
             this->GetNumberOfTimeSteps(), arr->GetVoidPointer(0)) < 0)
       {
-        vtkErrorMacro("Could not read element result variable " << ainfop->Name.c_str() << ".");
+        vtkErrorMacro("Could not read element result variable " << ainfop->Name << ".");
         arr->Delete();
         arr = nullptr;
       }
@@ -1841,8 +1837,8 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
         if (ex_get_var_time(exoid, EX_ELEM_BLOCK, ainfop->OriginalIndices[c], key.ObjectId, 1,
               this->GetNumberOfTimeSteps(), tmpVal[c].data()) < 0)
         {
-          vtkErrorMacro("Could not read temporal element result variable "
-            << ainfop->OriginalNames[c].c_str() << ".");
+          vtkErrorMacro(
+            "Could not read temporal element result variable " << ainfop->OriginalNames[c] << ".");
           arr->Delete();
           arr = nullptr;
           return nullptr;
@@ -1892,7 +1888,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
             arr->GetVoidPointer(0)) < 0)
       {
         vtkErrorMacro("Could not read result variable "
-          << ainfop->Name.c_str() << " for " << objtype_names[otypidx] << " " << oinfop->Id << ".");
+          << ainfop->Name << " for " << objtype_names[otypidx] << " " << oinfop->Id << ".");
         arr->Delete();
         arr = nullptr;
       }
@@ -1914,8 +1910,8 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
               tmpVal[c].data()) < 0)
         {
           vtkErrorMacro("Could not read result variable "
-            << ainfop->OriginalNames[c].c_str() << " for " << objtype_names[otypidx] << " "
-            << oinfop->Id << ".");
+            << ainfop->OriginalNames[c] << " for " << objtype_names[otypidx] << " " << oinfop->Id
+            << ".");
           arr->Delete();
           arr = nullptr;
         }
@@ -1963,7 +1959,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
     if (ex_get_num_map(exoid, static_cast<ex_entity_type>(key.ObjectType), minfop->Id,
           (vtkIdType*)arr->GetVoidPointer(0)) < 0)
     {
-      vtkErrorMacro("Could not read nodal map variable " << minfop->Name.c_str() << ".");
+      vtkErrorMacro("Could not read nodal map variable " << minfop->Name << ".");
       arr->Delete();
       arr = nullptr;
     }
@@ -2525,7 +2521,7 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
       vtkIdType ssnllen; // side set node list length
       if (ex_get_side_set_node_list_len(exoid, sinfop->Id, &ssnllen) < 0)
       {
-        vtkErrorMacro("Unable to fetch side set \"" << sinfop->Name.c_str() << "\" (" << sinfop->Id
+        vtkErrorMacro("Unable to fetch side set \"" << sinfop->Name << "\" (" << sinfop->Id
                                                     << ") node list length");
         arr = nullptr;
         return nullptr;
@@ -2537,8 +2533,8 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
       auto* dat = iarr->GetPointer(0);
       if (ex_get_side_set_node_list(exoid, sinfop->Id, dat, dat + sinfop->Size) < 0)
       {
-        vtkErrorMacro("Unable to fetch side set \"" << sinfop->Name.c_str() << "\" (" << sinfop->Id
-                                                    << ") node list");
+        vtkErrorMacro(
+          "Unable to fetch side set \"" << sinfop->Name << "\" (" << sinfop->Id << ") node list");
         iarr->Delete();
         arr = nullptr;
         return nullptr;
@@ -2560,8 +2556,8 @@ vtkDataArray* vtkExodusIIReaderPrivate::GetCacheOrRead(vtkExodusIICacheKey key)
       if (ex_get_side_set(exoid, sinfop->Id, side_set_elem_list.data(), side_set_side_list.data()) <
         0)
       {
-        vtkErrorMacro("Unable to fetch side set \"" << sinfop->Name.c_str() << "\" (" << sinfop->Id
-                                                    << ") node list");
+        vtkErrorMacro(
+          "Unable to fetch side set \"" << sinfop->Name << "\" (" << sinfop->Id << ") node list");
         arr = nullptr;
         return nullptr;
       }
@@ -3269,7 +3265,7 @@ void vtkExodusIIReaderPrivate::DetermineVtkCellType(BlockInfoType& binfo)
   }
   else
   {
-    vtkErrorMacro("Unsupported element type: " << elemType.c_str());
+    vtkErrorMacro("Unsupported element type: " << elemType);
   }
 
   // cell types not currently handled
diff --git a/IO/Exodus/vtkExodusIIReaderParser.cxx b/IO/Exodus/vtkExodusIIReaderParser.cxx
index 4928dea2f8540636d4402acd0820d52460e31cf4..d944e7501ffe5f18dce9e845a26e7ae92e0185c2 100644
--- a/IO/Exodus/vtkExodusIIReaderParser.cxx
+++ b/IO/Exodus/vtkExodusIIReaderParser.cxx
@@ -290,8 +290,8 @@ void vtkExodusIIReaderParser::FinishedParsing()
     }
 
     std::ostringstream stream;
-    stream << "Block: " << iter->first << " (" << desc.c_str() << ") "
-           << this->BlockID_To_Part[iter->first].c_str();
+    stream << "Block: " << iter->first << " (" << desc << ") "
+           << this->BlockID_To_Part[iter->first];
     this->NamesArray->SetValue(iter->second, stream.str().c_str());
   }
 
diff --git a/IO/Export/vtkJSONDataSetWriter.cxx b/IO/Export/vtkJSONDataSetWriter.cxx
index 5892f70101ead6efff87afc0b664780d64176517..e52f3201a107fc36cb007f360ae222080b294dd2 100644
--- a/IO/Export/vtkJSONDataSetWriter.cxx
+++ b/IO/Export/vtkJSONDataSetWriter.cxx
@@ -144,7 +144,7 @@ std::string vtkJSONDataSetWriter::WriteArray(
   bool needConvert;
   std::string id = vtkJSONDataSetWriter::GetUID(array, needConvert);
   std::stringstream arrayPath;
-  arrayPath << "data/" << id.c_str();
+  arrayPath << "data/" << id;
   bool success = vtkJSONDataSetWriter::WriteArrayContents(array, arrayPath.str().c_str());
 
   if (!success)
@@ -164,7 +164,7 @@ std::string vtkJSONDataSetWriter::WriteArray(
      << INDENT << "  \"ref\": {\n"
      << INDENT << "     \"encode\": \"LittleEndian\",\n"
      << INDENT << "     \"basepath\": \"data\",\n"
-     << INDENT << "     \"id\": \"" << id.c_str() << "\"\n"
+     << INDENT << "     \"id\": \"" << id << "\"\n"
      << INDENT << "  },\n"
      << INDENT << "  \"size\": " << array->GetNumberOfValues() << "\n"
      << INDENT << "}";
@@ -218,39 +218,35 @@ void vtkJSONDataSetWriter::Write(vtkDataSet* dataset)
 
     vtkPoints* points = polyData->GetPoints();
     metaJsonFile << ",\n  \"points\": "
-                 << this->WriteArray(points->GetData(), "vtkPoints", "points").c_str();
+                 << this->WriteArray(points->GetData(), "vtkPoints", "points");
 
     // Verts
     vtkNew<vtkIdTypeArray> cells;
     polyData->GetVerts()->ExportLegacyFormat(cells);
     if (cells->GetNumberOfValues())
     {
-      metaJsonFile << ",\n  \"verts\": "
-                   << this->WriteArray(cells, "vtkCellArray", "verts").c_str();
+      metaJsonFile << ",\n  \"verts\": " << this->WriteArray(cells, "vtkCellArray", "verts");
     }
 
     // Lines
     polyData->GetLines()->ExportLegacyFormat(cells);
     if (cells->GetNumberOfValues())
     {
-      metaJsonFile << ",\n  \"lines\": "
-                   << this->WriteArray(cells, "vtkCellArray", "lines").c_str();
+      metaJsonFile << ",\n  \"lines\": " << this->WriteArray(cells, "vtkCellArray", "lines");
     }
 
     // Strips
     polyData->GetStrips()->ExportLegacyFormat(cells);
     if (cells->GetNumberOfValues())
     {
-      metaJsonFile << ",\n  \"strips\": "
-                   << this->WriteArray(cells, "vtkCellArray", "strips").c_str();
+      metaJsonFile << ",\n  \"strips\": " << this->WriteArray(cells, "vtkCellArray", "strips");
     }
 
     // Polys
     polyData->GetPolys()->ExportLegacyFormat(cells);
     if (cells->GetNumberOfValues())
     {
-      metaJsonFile << ",\n  \"polys\": "
-                   << this->WriteArray(cells, "vtkCellArray", "polys").c_str();
+      metaJsonFile << ",\n  \"polys\": " << this->WriteArray(cells, "vtkCellArray", "polys");
     }
   }
 
@@ -260,7 +256,7 @@ void vtkJSONDataSetWriter::Write(vtkDataSet* dataset)
   if (!fieldJSON.empty())
   {
     isEmpty = false;
-    metaJsonFile << ",\n" << fieldJSON.c_str();
+    metaJsonFile << ",\n" << fieldJSON;
   }
 
   // CellData
@@ -268,7 +264,7 @@ void vtkJSONDataSetWriter::Write(vtkDataSet* dataset)
   if (!fieldJSON.empty())
   {
     isEmpty = false;
-    metaJsonFile << ",\n" << fieldJSON.c_str();
+    metaJsonFile << ",\n" << fieldJSON;
   }
 
   metaJsonFile << "}\n";
@@ -492,7 +488,7 @@ std::string vtkJSONDataSetWriter::GetUID(vtkDataArray* input, bool& needConversi
 
   std::stringstream ss;
   ss << vtkJSONDataSetWriter::GetShortType(input, needConversion) << "_"
-     << input->GetNumberOfValues() << "-" << hash.c_str();
+     << input->GetNumberOfValues() << "-" << hash;
 
   return ss.str();
 }
diff --git a/IO/Export/vtkJSONSceneExporter.cxx b/IO/Export/vtkJSONSceneExporter.cxx
index 81824f1fdae3debf5056a1f0736dc0cc647a9710..9aff1fc7b720fc1f4935071c7c4cea170fc27aa7 100644
--- a/IO/Export/vtkJSONSceneExporter.cxx
+++ b/IO/Export/vtkJSONSceneExporter.cxx
@@ -667,8 +667,7 @@ void vtkJSONSceneExporter::WriteData()
   size_t nbLuts = this->LookupTables.size();
   for (auto const& lut : this->LookupTables)
   {
-    sceneJsonFile << "    \"" << lut.first.c_str() << "\": " << lut.second.c_str()
-                  << (--nbLuts ? "," : "") << "\n";
+    sceneJsonFile << "    \"" << lut.first << "\": " << lut.second << (--nbLuts ? "," : "") << "\n";
   }
 
   sceneJsonFile << "  }\n"
@@ -680,7 +679,7 @@ void vtkJSONSceneExporter::WriteData()
 
   vtksys::ofstream file;
   file.open(scenePath.str().c_str(), ios::out);
-  file << sceneJsonFile.str().c_str();
+  file << sceneJsonFile.str();
   file.close();
 
   if (vtksys::SystemTools::FileExists(this->FileName))
@@ -712,7 +711,7 @@ size_t getFileSize(const std::string& path)
   int res = vtksys::SystemTools::Stat(path, &stat_buf);
   if (res < 0)
   {
-    std::cerr << "Failed to get size of file " << path.c_str() << std::endl;
+    std::cerr << "Failed to get size of file " << path << std::endl;
     return 0;
   }
 
diff --git a/IO/Geometry/Testing/Cxx/UnstructuredGridCellGradients.cxx b/IO/Geometry/Testing/Cxx/UnstructuredGridCellGradients.cxx
index 6fa0da350ef586a99a80a66f49efe0f4d3bd33d5..af9cff4c33076e201695a451cc4482f22907aa13 100644
--- a/IO/Geometry/Testing/Cxx/UnstructuredGridCellGradients.cxx
+++ b/IO/Geometry/Testing/Cxx/UnstructuredGridCellGradients.cxx
@@ -62,7 +62,7 @@ int UnstructuredGridCellGradients(int argc, char* argv[])
   vtkStdString filename;
   filename = data_root;
   filename += "/Data/uGridEx.vtk";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   VTK_CREATE(vtkUnstructuredGridReader, reader);
   reader->SetFileName(filename.c_str());
 
diff --git a/IO/Geometry/Testing/Cxx/UnstructuredGridFastGradients.cxx b/IO/Geometry/Testing/Cxx/UnstructuredGridFastGradients.cxx
index 1715927bbf1883fd4715c47d36c0aadc8301631e..1b7b639465a57fc79febcd56c132176f081fedef 100644
--- a/IO/Geometry/Testing/Cxx/UnstructuredGridFastGradients.cxx
+++ b/IO/Geometry/Testing/Cxx/UnstructuredGridFastGradients.cxx
@@ -60,7 +60,7 @@ int UnstructuredGridFastGradients(int argc, char* argv[])
   vtkStdString filename;
   filename = data_root;
   filename += "/Data/uGridEx.vtk";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   VTK_CREATE(vtkUnstructuredGridReader, reader);
   reader->SetFileName(filename.c_str());
 
diff --git a/IO/Geometry/Testing/Cxx/UnstructuredGridGradients.cxx b/IO/Geometry/Testing/Cxx/UnstructuredGridGradients.cxx
index 3af142295395ee474b044b21e035dcc005509cb9..9ae0445e826e8e205fa0c81e39fb1ada0281d4e8 100644
--- a/IO/Geometry/Testing/Cxx/UnstructuredGridGradients.cxx
+++ b/IO/Geometry/Testing/Cxx/UnstructuredGridGradients.cxx
@@ -60,7 +60,7 @@ int UnstructuredGridGradients(int argc, char* argv[])
   vtkStdString filename;
   filename = data_root;
   filename += "/Data/uGridEx.vtk";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   VTK_CREATE(vtkUnstructuredGridReader, reader);
   reader->SetFileName(filename.c_str());
 
diff --git a/IO/Geometry/vtkBYUWriter.cxx b/IO/Geometry/vtkBYUWriter.cxx
index 6cd67f11df8e8d0929cf5ede75c95f06bb7be70b..5f08a986f09697bcfef756f1934d9a8df664fb0f 100644
--- a/IO/Geometry/vtkBYUWriter.cxx
+++ b/IO/Geometry/vtkBYUWriter.cxx
@@ -120,7 +120,7 @@ void vtkBYUWriter::WriteData()
     }
     unlink(this->ScalarFileName);
     errorMessage += this->ScalarFileName;
-    vtkErrorMacro(<< errorMessage.c_str());
+    vtkErrorMacro(<< errorMessage);
     return;
   }
   this->WriteTextureFile(numPts);
@@ -146,7 +146,7 @@ void vtkBYUWriter::WriteData()
     }
     unlink(this->TextureFileName);
     errorMessage += this->TextureFileName;
-    vtkErrorMacro(<< errorMessage.c_str());
+    vtkErrorMacro(<< errorMessage);
     return;
   }
 
diff --git a/IO/Geometry/vtkParticleReader.cxx b/IO/Geometry/vtkParticleReader.cxx
index c611f50775de8873be690128f82ad8d9ecc805e8..8f8a949e96d78825e2515909b76eb1f71f13daae 100644
--- a/IO/Geometry/vtkParticleReader.cxx
+++ b/IO/Geometry/vtkParticleReader.cxx
@@ -101,7 +101,7 @@ public:
 
     // We have data.
     std::stringstream is;
-    is << s.c_str();
+    is << s;
     is >> val[0] >> val[1] >> val[2] >> val[3];
 
     return 1;
diff --git a/IO/Geometry/vtkTecplotReader.cxx b/IO/Geometry/vtkTecplotReader.cxx
index f396851c78ec1fc7e1b8fd248c18c32fa4af68e9..a938d5f2d9c299b65e4d4c3b462e8445f24ca07e 100644
--- a/IO/Geometry/vtkTecplotReader.cxx
+++ b/IO/Geometry/vtkTecplotReader.cxx
@@ -2060,7 +2060,7 @@ void vtkTecplotReader::ReadFile(vtkMultiBlockDataSet* multZone)
         else
         {
           // UNKNOWN FORMAT
-          vtkErrorMacro(<< this->FileName << ": The format " << format.c_str()
+          vtkErrorMacro(<< this->FileName << ": The format " << format
                         << " found in the file is unknown.");
           return;
         }
@@ -2151,8 +2151,7 @@ void vtkTecplotReader::ReadFile(vtkMultiBlockDataSet* multZone)
               if (pos != std::string::npos)
               {
                 exprDef.replace(pos, 1, "}");
-                vtkDebugMacro(
-                  "Expr name = " << exprName.c_str() << ", Expr def = " << exprDef.c_str());
+                vtkDebugMacro("Expr name = " << exprName << ", Expr def = " << exprDef);
               }
             }
           }
@@ -2173,7 +2172,7 @@ void vtkTecplotReader::ReadFile(vtkMultiBlockDataSet* multZone)
     else
     {
       // UNKNOWN RECORD TYPE
-      vtkErrorMacro(<< this->FileName << ": The record type " << tok.c_str()
+      vtkErrorMacro(<< this->FileName << ": The record type " << tok
                     << " found in the file is unknown.");
       return;
     }
diff --git a/IO/Geometry/vtkWindBladeReader.cxx b/IO/Geometry/vtkWindBladeReader.cxx
index 5f129516f10191efbf2d04d24c14f38ca846a23d..52ff9eefedc761014f710a36a589d1effb1e83e3 100644
--- a/IO/Geometry/vtkWindBladeReader.cxx
+++ b/IO/Geometry/vtkWindBladeReader.cxx
@@ -1141,14 +1141,14 @@ void vtkWindBladeReader::SetupBladeData()
   if (!inStr2)
   {
     vtkWarningMacro(
-      "Could not open blade file: " << fileName2.str().c_str() << " to calculate blade cells.");
+      "Could not open blade file: " << fileName2.str() << " to calculate blade cells.");
     for (int j = this->TimeStepFirst + this->TimeStepDelta; j <= this->TimeStepLast;
          j += this->TimeStepDelta)
     {
       std::ostringstream fileName3;
       fileName3 << this->RootDirectory << "/" << this->TurbineDirectory << "/"
                 << this->TurbineBladeName << j;
-      // std::cout << "Trying " << fileName3.str().c_str() << "...";
+      // std::cout << "Trying " << fileName3.str() << "...";
 
       inStr2.open(fileName3.str().c_str());
 
@@ -1739,7 +1739,7 @@ void vtkWindBladeReader::ReadBladeHeader(
   }
   else
   {
-    std::cout << fileName.c_str() << " is empty!\n";
+    std::cout << fileName << " is empty!\n";
   }
   // reset seek position
   inStr.seekg(0, std::ios_base::beg);
diff --git a/IO/IOSS/vtkIOSSUtilities.cxx b/IO/IOSS/vtkIOSSUtilities.cxx
index e5d62f01eef83a0cec0a7afa15cf343846bb41d6..b658e3c50c5518ed897df3f2ba59e42503c92382 100644
--- a/IO/IOSS/vtkIOSSUtilities.cxx
+++ b/IO/IOSS/vtkIOSSUtilities.cxx
@@ -70,9 +70,8 @@ public:
       }
       e = parent;
     }
-    stream
-      << ":"
-      << vtksys::SystemTools::GetFilenameName(entity->get_database()->decoded_filename()).c_str();
+    stream << ":"
+           << vtksys::SystemTools::GetFilenameName(entity->get_database()->decoded_filename());
     return stream.str();
   }
 };
diff --git a/IO/Image/Testing/Cxx/TestBMPReader.cxx b/IO/Image/Testing/Cxx/TestBMPReader.cxx
index 73da5b2c67e48c6681c2a74c16609264d788bc70..a37a91a0effe3f8b7ad48fe9147d311a37d9dd11 100644
--- a/IO/Image/Testing/Cxx/TestBMPReader.cxx
+++ b/IO/Image/Testing/Cxx/TestBMPReader.cxx
@@ -42,7 +42,7 @@ int TestBMPReader(int argc, char* argv[])
   // Check the image can be read
   if (!BMPReader->CanReadFile(filename.c_str()))
   {
-    cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+    cerr << "CanReadFile failed for " << filename << "\n";
     return EXIT_FAILURE;
   }
 
diff --git a/IO/Image/Testing/Cxx/TestBMPReaderDoNotAllow8BitBMP.cxx b/IO/Image/Testing/Cxx/TestBMPReaderDoNotAllow8BitBMP.cxx
index 7e3bb7c63070065ae16b47bce7acfbdb0ff46e56..7ddc330c8f4a4a8a706f70b477f843c4bfb12f11 100644
--- a/IO/Image/Testing/Cxx/TestBMPReaderDoNotAllow8BitBMP.cxx
+++ b/IO/Image/Testing/Cxx/TestBMPReaderDoNotAllow8BitBMP.cxx
@@ -42,7 +42,7 @@ int TestBMPReaderDoNotAllow8BitBMP(int argc, char* argv[])
   // Check the image can be read
   if (!BMPReader->CanReadFile(filename.c_str()))
   {
-    cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+    cerr << "CanReadFile failed for " << filename << "\n";
     return EXIT_FAILURE;
   }
 
diff --git a/IO/Image/Testing/Cxx/TestDICOMImageReader.cxx b/IO/Image/Testing/Cxx/TestDICOMImageReader.cxx
index 3f15d092b3139d842710deb045de57efddc188a2..9ad26548687ccf523a980f35bbc80fe2c58034fe 100644
--- a/IO/Image/Testing/Cxx/TestDICOMImageReader.cxx
+++ b/IO/Image/Testing/Cxx/TestDICOMImageReader.cxx
@@ -41,7 +41,7 @@ int TestDICOMImageReader(int argc, char* argv[])
   // Check the image can be read
   if (!DICOMReader->CanReadFile(filename.c_str()))
   {
-    cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+    cerr << "CanReadFile failed for " << filename << "\n";
     exit(1);
   }
 
diff --git a/IO/Image/Testing/Cxx/TestHDRReader.cxx b/IO/Image/Testing/Cxx/TestHDRReader.cxx
index e8aeef73405ebc10747875e0b3aee0a601ff59ee..c000800d55f7a6b1c158cd60d0691519491b482c 100644
--- a/IO/Image/Testing/Cxx/TestHDRReader.cxx
+++ b/IO/Image/Testing/Cxx/TestHDRReader.cxx
@@ -35,7 +35,7 @@ int TestHDRReader(int argc, char* argv[])
   // Check the image can be read
   if (!reader->CanReadFile(filename.c_str()))
   {
-    cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+    cerr << "CanReadFile failed for " << filename << "\n";
     return EXIT_FAILURE;
   }
 
diff --git a/IO/Image/Testing/Cxx/TestJPEGReader.cxx b/IO/Image/Testing/Cxx/TestJPEGReader.cxx
index 8c35f6e44e04fc2e42b5045bc2b7a42a91eeb587..88c2adc81083b62ff172b68c2d1bd993ac457ca2 100644
--- a/IO/Image/Testing/Cxx/TestJPEGReader.cxx
+++ b/IO/Image/Testing/Cxx/TestJPEGReader.cxx
@@ -40,7 +40,7 @@ int TestJPEGReader(int argc, char* argv[])
   // Check the image can be read
   if (!JPEGReader->CanReadFile(filename.c_str()))
   {
-    cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+    cerr << "CanReadFile failed for " << filename << "\n";
     return EXIT_FAILURE;
   }
 
diff --git a/IO/Image/Testing/Cxx/TestNIFTIReaderWriter.cxx b/IO/Image/Testing/Cxx/TestNIFTIReaderWriter.cxx
index a12ed7444410c122fdfa891710e181a16cf1bd8e..c21d7bb442c5345b24d5ef1940d0f7a00a47c152 100644
--- a/IO/Image/Testing/Cxx/TestNIFTIReaderWriter.cxx
+++ b/IO/Image/Testing/Cxx/TestNIFTIReaderWriter.cxx
@@ -364,7 +364,7 @@ int TestNIFTIReaderWriter(int argc, char* argv[])
     double err = TestReadWriteRead(infile, infile2, outpath.c_str(), planarRGB);
     if (err != 0.0)
     {
-      cerr << "Input " << infile << " differs from output " << outpath.c_str() << "\n";
+      cerr << "Input " << infile << " differs from output " << outpath << "\n";
       return 1;
     }
     delete[] infile;
diff --git a/IO/Image/Testing/Cxx/TestPNGReader.cxx b/IO/Image/Testing/Cxx/TestPNGReader.cxx
index 21c4286ad16d55627032d7965971eb55f27a414e..19b5069774d2058d684c06407f9bdc52b9f741d5 100644
--- a/IO/Image/Testing/Cxx/TestPNGReader.cxx
+++ b/IO/Image/Testing/Cxx/TestPNGReader.cxx
@@ -37,7 +37,7 @@ int TestPNGReader(int argc, char* argv[])
   // Check the image can be read
   if (!pngReader->CanReadFile(filename.c_str()))
   {
-    cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+    cerr << "CanReadFile failed for " << filename << "\n";
     return EXIT_FAILURE;
   }
 
diff --git a/IO/Image/Testing/Cxx/TestPNGReaderReadFromMemory.cxx b/IO/Image/Testing/Cxx/TestPNGReaderReadFromMemory.cxx
index 3deb7215676d68833d62d7111469a188ea0307fd..c104d0d7d442b62a65431765168e18b4920e2d3c 100644
--- a/IO/Image/Testing/Cxx/TestPNGReaderReadFromMemory.cxx
+++ b/IO/Image/Testing/Cxx/TestPNGReaderReadFromMemory.cxx
@@ -41,7 +41,7 @@ int TestPNGReaderReadFromMemory(int argc, char* argv[])
   vtksys::ifstream stream(filename.c_str(), std::ios::in | std::ios::binary);
   if (!stream.is_open())
   {
-    std::cerr << "Could not open file " << filename.c_str() << std::endl;
+    std::cerr << "Could not open file " << filename << std::endl;
   }
   // Get file size
   unsigned long len = vtksys::SystemTools::FileLength(filename);
diff --git a/IO/Image/Testing/Cxx/TestTGAReader.cxx b/IO/Image/Testing/Cxx/TestTGAReader.cxx
index cfcddaf85d662ca15b681ab4a10dc9bc14daadeb..3971783dd9fae9835ee6b5b2e43e5cb34bb72221 100644
--- a/IO/Image/Testing/Cxx/TestTGAReader.cxx
+++ b/IO/Image/Testing/Cxx/TestTGAReader.cxx
@@ -37,7 +37,7 @@ int TestTGAReader(int argc, char* argv[])
   // Check the image can be read
   if (!tgaReader->CanReadFile(filename.c_str()))
   {
-    cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+    cerr << "CanReadFile failed for " << filename << "\n";
     return EXIT_FAILURE;
   }
 
diff --git a/IO/Image/Testing/Cxx/TestWriteToUnicodeFile.cxx b/IO/Image/Testing/Cxx/TestWriteToUnicodeFile.cxx
index da25109070eb99fbe98c2b3dbcac91185d87c8a3..6e9602fda8a753d3407030093c9599722a4a1ccf 100644
--- a/IO/Image/Testing/Cxx/TestWriteToUnicodeFile.cxx
+++ b/IO/Image/Testing/Cxx/TestWriteToUnicodeFile.cxx
@@ -119,7 +119,7 @@ int TestWriteToUnicodeFile(int argc, char* argv[])
   {
     if (!reader->CanReadFile(filename.c_str()))
     {
-      cerr << "CanReadFile failed for " << filename.c_str() << "\n";
+      cerr << "CanReadFile failed for " << filename << "\n";
       return EXIT_FAILURE;
     }
 
diff --git a/IO/Image/vtkDICOMImageReader.cxx b/IO/Image/vtkDICOMImageReader.cxx
index fed5e8fc4ebec7cccb37732fda390782c88411ac..1356b3aad9f033cae9e0299ed1a827f234bcece6 100644
--- a/IO/Image/vtkDICOMImageReader.cxx
+++ b/IO/Image/vtkDICOMImageReader.cxx
@@ -167,12 +167,12 @@ void vtkDICOMImageReader::ExecuteInformation()
 
       if (val == 1)
       {
-        vtkDebugMacro(<< "Adding " << fileString.c_str() << " to DICOMFileNames.");
+        vtkDebugMacro(<< "Adding " << fileString << " to DICOMFileNames.");
         this->DICOMFileNames->push_back(fileString);
       }
       else
       {
-        vtkDebugMacro(<< fileString.c_str() << " - DICOMParser CanReadFile returned : " << val);
+        vtkDebugMacro(<< fileString << " - DICOMParser CanReadFile returned : " << val);
       }
     }
     std::vector<std::string>::iterator iter;
@@ -213,9 +213,8 @@ void vtkDICOMImageReader::ExecuteInformation()
       std::vector<std::pair<float, std::string>>::iterator siter;
       for (siter = sortedFiles.begin(); siter != sortedFiles.end(); ++siter)
       {
-        vtkDebugMacro(<< "Sorted filename : " << (*siter).second.c_str());
-        vtkDebugMacro(<< "Adding file " << (*siter).second.c_str()
-                      << " at slice : " << (*siter).first);
+        vtkDebugMacro(<< "Sorted filename : " << (*siter).second);
+        vtkDebugMacro(<< "Adding file " << (*siter).second << " at slice : " << (*siter).first);
         this->DICOMFileNames->push_back((*siter).second);
       }
     }
diff --git a/IO/Import/vtkOBJImporter.cxx b/IO/Import/vtkOBJImporter.cxx
index cdbee9d9bba5250fcd24bc6539f8234e6aee2072..fb5f9ef52e8dadd8d4f79b08804633d416c884a7 100644
--- a/IO/Import/vtkOBJImporter.cxx
+++ b/IO/Import/vtkOBJImporter.cxx
@@ -54,7 +54,7 @@ int CanReadFile(vtkObject* that, const std::string& fname)
   FILE* fileFD = vtksys::SystemTools::Fopen(fname, "rb");
   if (fileFD == nullptr)
   {
-    vtkErrorWithObjectMacro(that, << "Unable to open file: " << fname.c_str());
+    vtkErrorWithObjectMacro(that, << "Unable to open file: " << fname);
     return 0;
   }
   fclose(fileFD);
diff --git a/IO/Infovis/vtkDelimitedTextReader.cxx b/IO/Infovis/vtkDelimitedTextReader.cxx
index 07c7fc0e83107f0f87fe320792728121721ccb16..90ffee6a4bbd8521752a1c95f8bdcde423314d1d 100644
--- a/IO/Infovis/vtkDelimitedTextReader.cxx
+++ b/IO/Infovis/vtkDelimitedTextReader.cxx
@@ -371,12 +371,9 @@ void vtkDelimitedTextReader::PrintSelf(ostream& os, vtkIndent indent)
   os << indent << "UnicodeCharacterSet: "
      << (this->UnicodeCharacterSet ? this->UnicodeCharacterSet : "(none)") << endl;
   os << indent << "MaxRecords: " << this->MaxRecords << endl;
-  os << indent << "UnicodeRecordDelimiters: '" << this->UnicodeRecordDelimiters.c_str() << "'"
-     << endl;
-  os << indent << "UnicodeFieldDelimiters: '" << this->UnicodeFieldDelimiters.c_str() << "'"
-     << endl;
-  os << indent << "UnicodeStringDelimiters: '" << this->UnicodeStringDelimiters.c_str() << "'"
-     << endl;
+  os << indent << "UnicodeRecordDelimiters: '" << this->UnicodeRecordDelimiters << "'" << endl;
+  os << indent << "UnicodeFieldDelimiters: '" << this->UnicodeFieldDelimiters << "'" << endl;
+  os << indent << "UnicodeStringDelimiters: '" << this->UnicodeStringDelimiters << "'" << endl;
   os << indent << "StringDelimiter: " << this->StringDelimiter << endl;
   os << indent << "ReplacementCharacter: " << this->ReplacementCharacter << endl;
   os << indent << "FieldDelimiterCharacters: "
diff --git a/IO/Infovis/vtkFixedWidthTextReader.cxx b/IO/Infovis/vtkFixedWidthTextReader.cxx
index a9459b9418496fe302ee08d9fc99d285d6824d55..54107f67ff034cc4a21dfc33e002eac763f540e6 100644
--- a/IO/Infovis/vtkFixedWidthTextReader.cxx
+++ b/IO/Infovis/vtkFixedWidthTextReader.cxx
@@ -114,7 +114,7 @@ int vtkFixedWidthTextReader::RequestData(
 
   my_getline(infile, firstLine);
 
-  //  vtkDebugMacro(<<"First line of file: " << firstLine.c_str());
+  //  vtkDebugMacro(<<"First line of file: " << firstLine);
 
   if (this->HaveHeaders)
   {
@@ -176,7 +176,7 @@ int vtkFixedWidthTextReader::RequestData(
       this->InvokeEvent(vtkCommand::ProgressEvent, &numLinesRead);
     }
 
-    vtkDebugMacro(<< "Next line: " << nextLine.c_str());
+    vtkDebugMacro(<< "Next line: " << nextLine);
     std::vector<vtkStdString> dataVector;
 
     // Split string on the delimiters
diff --git a/IO/LSDyna/vtkLSDynaReader.cxx b/IO/LSDyna/vtkLSDynaReader.cxx
index f8aa2b9b2353f95ae87ed1ee8fdc082ee4259f4f..e01acf3edfc40e671362d1cf307317890780e312 100644
--- a/IO/LSDyna/vtkLSDynaReader.cxx
+++ b/IO/LSDyna/vtkLSDynaReader.cxx
@@ -3377,8 +3377,7 @@ int vtkLSDynaReader::WriteInputDeckSummary(const char* fname)
 #endif // _WIN32
     {
       // OK, we have an absolute path, so it should be safe to write it out.
-      xmlSummary << "  <database path=\"" << dbDir.c_str() << "\" name=\"" << dbName.c_str()
-                 << "\"/>" << endl;
+      xmlSummary << "  <database path=\"" << dbDir << "\" name=\"" << dbName << "\"/>" << endl;
     }
   }
 
@@ -3386,7 +3385,7 @@ int vtkLSDynaReader::WriteInputDeckSummary(const char* fname)
   {
     xmlSummary << "  <part id=\"" << this->P->PartIds[p] << "\" material_id=\""
                << this->P->PartMaterials[p] << "\" status=\"" << this->P->PartStatus[p]
-               << "\"><name>" << this->P->PartNames[p].c_str() << "</name></part>" << endl;
+               << "\"><name>" << this->P->PartNames[p] << "</name></part>" << endl;
   }
 
   xmlSummary << "</lsdyna>" << endl;
diff --git a/IO/MPIParallel/vtkPWindBladeReader.cxx b/IO/MPIParallel/vtkPWindBladeReader.cxx
index 9c972fa7ba2158267e9c7fb142e52e3348ab078b..58b5421ec6b1be035278d61828b88c8323df0b4c 100644
--- a/IO/MPIParallel/vtkPWindBladeReader.cxx
+++ b/IO/MPIParallel/vtkPWindBladeReader.cxx
@@ -477,14 +477,14 @@ void vtkPWindBladeReader::SetupBladeData()
   if (!inStr2)
   {
     vtkWarningMacro(
-      "Could not open blade file: " << fileName2.str().c_str() << " to calculate blade cells.");
+      "Could not open blade file: " << fileName2.str() << " to calculate blade cells.");
     for (int j = this->TimeStepFirst + this->TimeStepDelta; j <= this->TimeStepLast;
          j += this->TimeStepDelta)
     {
       std::ostringstream fileName3;
       fileName3 << this->RootDirectory << "/" << this->TurbineDirectory << "/"
                 << this->TurbineBladeName << j;
-      // std::cout << "Trying " << fileName3.str().c_str() << "...";
+      // std::cout << "Trying " << fileName3.str() << "...";
 
       cchar = new char[strlen(fileName3.str().c_str()) + 1];
       strcpy(cchar, fileName3.str().c_str());
diff --git a/IO/Movie/Testing/Cxx/TestMP4Writer.cxx b/IO/Movie/Testing/Cxx/TestMP4Writer.cxx
index 2b728f1bce5f65f962a67db318ffca999a70e175..1c7f311047f91db2b62004f31797fa66b764a62f 100644
--- a/IO/Movie/Testing/Cxx/TestMP4Writer.cxx
+++ b/IO/Movie/Testing/Cxx/TestMP4Writer.cxx
@@ -95,12 +95,12 @@ int TestMP4Writer(int argc, char* argv[])
   if (!exists)
   {
     success = false;
-    vtkLog(ERROR, "Test failing because file '" << outputFile.c_str() << "' doesn't exist...");
+    vtkLog(ERROR, "Test failing because file '" << outputFile << "' doesn't exist...");
   }
   if (0 == length)
   {
     success = false;
-    vtkLog(ERROR, "Test failing because file '" << outputFile.c_str() << "' has zero length...");
+    vtkLog(ERROR, "Test failing because file '" << outputFile << "' has zero length...");
   }
 
   return success ? 0 : -1;
diff --git a/IO/MySQL/Testing/Cxx/TestMySQLDatabase.cxx b/IO/MySQL/Testing/Cxx/TestMySQLDatabase.cxx
index 77ed59c860d7bc877d833fc3a8762eff5014714f..9ca212a22c8ee8f76642e3248cebb96f4b94aa6f 100644
--- a/IO/MySQL/Testing/Cxx/TestMySQLDatabase.cxx
+++ b/IO/MySQL/Testing/Cxx/TestMySQLDatabase.cxx
@@ -116,7 +116,7 @@ int TestMySQLDatabase(int, char** const)
       {
         cerr << ", ";
       }
-      cerr << query->DataValue(field).ToString().c_str();
+      cerr << query->DataValue(field).ToString();
     }
     cerr << endl;
   }
@@ -145,7 +145,7 @@ int TestMySQLDatabase(int, char** const)
       {
         cerr << ", ";
       }
-      cerr << va->GetValue(field).ToString().c_str();
+      cerr << va->GetValue(field).ToString();
     }
     cerr << endl;
   }
@@ -285,7 +285,7 @@ int TestMySQLDatabase(int, char** const)
           }
           cerr << "     Column: ";
         }
-        cerr << query->DataValue(field).ToString().c_str();
+        cerr << query->DataValue(field).ToString();
       }
       cerr << endl;
     }
@@ -328,7 +328,7 @@ int TestMySQLDatabase(int, char** const)
         {
           cerr << "     Index: ";
         }
-        cerr << query->DataValue(field).ToString().c_str();
+        cerr << query->DataValue(field).ToString();
       }
       cerr << endl;
 
@@ -459,7 +459,7 @@ int TestMySQLDatabase(int, char** const)
     return 1;
   }
 
-  cerr << query->DataValue(0).ToString().c_str() << "> ";
+  cerr << query->DataValue(0).ToString() << "> ";
   cerr << " done." << endl;
 
   // 8. Drop tables
diff --git a/IO/MySQL/vtkMySQLDatabase.cxx b/IO/MySQL/vtkMySQLDatabase.cxx
index 300b122992aaea05fd5c0fc00f89f53711a3bae0..e39bcda36611db7fcc647a8a0142a7ede9306231 100644
--- a/IO/MySQL/vtkMySQLDatabase.cxx
+++ b/IO/MySQL/vtkMySQLDatabase.cxx
@@ -339,7 +339,7 @@ bool vtkMySQLDatabase::ParseURL(const char* URL)
   if (!vtksys::SystemTools::ParseURL(
         urlstr, protocol, username, password, hostname, dataport, database))
   {
-    vtkGenericWarningMacro("Invalid URL: \"" << urlstr.c_str() << "\"");
+    vtkGenericWarningMacro("Invalid URL: \"" << urlstr << "\"");
     return false;
   }
 
diff --git a/IO/MySQL/vtkMySQLQuery.cxx b/IO/MySQL/vtkMySQLQuery.cxx
index 0af9cce6e4ccf9c3f9b7992bf5a958fbcd137e34..da91d9f91f3cd6c05560e9af4f373018e85b04d0 100644
--- a/IO/MySQL/vtkMySQLQuery.cxx
+++ b/IO/MySQL/vtkMySQLQuery.cxx
@@ -977,7 +977,7 @@ bool vtkMySQLQuery::SetQuery(const char* newQuery)
   if (!success)
   {
     this->SetLastErrorText(errorMessage.c_str());
-    vtkErrorMacro(<< "SetQuery: Error while preparing statement: " << errorMessage.c_str());
+    vtkErrorMacro(<< "SetQuery: Error while preparing statement: " << errorMessage);
   }
   return success;
 }
diff --git a/IO/NetCDF/vtkNetCDFReader.cxx b/IO/NetCDF/vtkNetCDFReader.cxx
index e55dcb8b2c79cd93d3a72a529f8de2fbaf4f9632..7e41c352640325f1d86a7b31ea24b8a2e48feab5 100644
--- a/IO/NetCDF/vtkNetCDFReader.cxx
+++ b/IO/NetCDF/vtkNetCDFReader.cxx
@@ -825,12 +825,10 @@ int vtkNetCDFReader::LoadVariable(int ncFD, const char* varName, double time, vt
   if (numDims != this->LoadingDimensions->GetNumberOfTuples())
   {
     vtkWarningMacro(<< "Variable " << varName << " dimensions ("
-                    << this->DescribeDimensions(ncFD, dimIds + timeIndexOffset, numDims).c_str()
+                    << this->DescribeDimensions(ncFD, dimIds + timeIndexOffset, numDims)
                     << ") are different than the other variable dimensions ("
-                    << this
-                         ->DescribeDimensions(ncFD, this->LoadingDimensions->GetPointer(0),
-                           this->LoadingDimensions->GetNumberOfTuples())
-                         .c_str()
+                    << this->DescribeDimensions(ncFD, this->LoadingDimensions->GetPointer(0),
+                         this->LoadingDimensions->GetNumberOfTuples())
                     << ").  Skipping");
     return 1;
   }
@@ -839,12 +837,10 @@ int vtkNetCDFReader::LoadVariable(int ncFD, const char* varName, double time, vt
     if (dimIds[i + timeIndexOffset] != this->LoadingDimensions->GetValue(i))
     {
       vtkWarningMacro(<< "Variable " << varName << " dimensions ("
-                      << this->DescribeDimensions(ncFD, dimIds + timeIndexOffset, numDims).c_str()
+                      << this->DescribeDimensions(ncFD, dimIds + timeIndexOffset, numDims)
                       << ") are different than the other variable dimensions ("
-                      << this
-                           ->DescribeDimensions(ncFD, this->LoadingDimensions->GetPointer(0),
-                             this->LoadingDimensions->GetNumberOfTuples())
-                           .c_str()
+                      << this->DescribeDimensions(ncFD, this->LoadingDimensions->GetPointer(0),
+                           this->LoadingDimensions->GetNumberOfTuples())
                       << ").  Skipping");
       return 1;
     }
diff --git a/IO/NetCDF/vtkSLACReader.cxx b/IO/NetCDF/vtkSLACReader.cxx
index 0bdefb2f15db5ff129649b84cb62753cb7a52e2b..0ace44d250d182394105d724bd88a0a4fd82914b 100644
--- a/IO/NetCDF/vtkSLACReader.cxx
+++ b/IO/NetCDF/vtkSLACReader.cxx
@@ -679,7 +679,7 @@ int vtkSLACReader::RequestInformation(vtkInformation* vtkNotUsed(request),
     if (this->GetNumTuplesInVariable(meshFD, meshCoordsVarId, 3) !=
       this->GetNumTuplesInVariable(modeFD, modeCoordsVarId, 3))
     {
-      vtkWarningMacro(<< "Mode file " << this->Internal->ModeFileNames[0].c_str()
+      vtkWarningMacro(<< "Mode file " << this->Internal->ModeFileNames[0]
                       << " invalid for mesh file " << this->MeshFileName
                       << "; the number of coordinates do not match.");
     }
diff --git a/IO/ODBC/Testing/Cxx/TestODBCDatabase.cxx b/IO/ODBC/Testing/Cxx/TestODBCDatabase.cxx
index 2e7a366511e622d086ecef069168f5dfc7a08ba2..ad690e5dfdc06a8568221c6ad62fe6c573db4098 100644
--- a/IO/ODBC/Testing/Cxx/TestODBCDatabase.cxx
+++ b/IO/ODBC/Testing/Cxx/TestODBCDatabase.cxx
@@ -129,7 +129,7 @@ int TestODBCDatabase(int, char** const)
       {
         cerr << ", ";
       }
-      cerr << query->DataValue(field).ToString().c_str();
+      cerr << query->DataValue(field).ToString();
     }
     cerr << endl;
   }
@@ -158,7 +158,7 @@ int TestODBCDatabase(int, char** const)
       {
         cerr << ", ";
       }
-      cerr << va->GetValue(field).ToString().c_str();
+      cerr << va->GetValue(field).ToString();
     }
     cerr << endl;
   }
diff --git a/IO/ODBC/vtkODBCDatabase.cxx b/IO/ODBC/vtkODBCDatabase.cxx
index 6a484ca7e94ebc1a53f382d0abf2c7ea5b75ec07..d17231a4c68caecd83ed0c342317bcdafb84db62 100644
--- a/IO/ODBC/vtkODBCDatabase.cxx
+++ b/IO/ODBC/vtkODBCDatabase.cxx
@@ -533,7 +533,7 @@ vtkStringArray* vtkODBCDatabase::GetRecord(const char* table)
 
     vtkErrorMacro(
       << "vtkODBCDatabase::GetRecord: Unable to retrieve column list (SQLColumns): error "
-      << error.c_str());
+      << error);
     this->SetLastErrorText(error.c_str());
     SQLFreeHandle(SQL_HANDLE_STMT, statement);
     return this->Record;
@@ -545,7 +545,7 @@ vtkStringArray* vtkODBCDatabase::GetRecord(const char* table)
     vtkStdString error = GetErrorMessage(SQL_HANDLE_STMT, statement);
     vtkErrorMacro(
       << "vtkODBCDatabase::GetRecord: Unable to retrieve column list (SQLFetchScroll): error "
-      << error.c_str());
+      << error);
     this->SetLastErrorText(error.c_str());
     SQLFreeHandle(SQL_HANDLE_STMT, statement);
     return this->Record;
@@ -650,7 +650,7 @@ bool vtkODBCDatabase::ParseURL(const char* URL)
   if (!vtksys::SystemTools::ParseURL(
         urlstr, protocol, username, unused, dsname, dataport, database))
   {
-    vtkErrorMacro("Invalid URL: \"" << urlstr.c_str() << "\"");
+    vtkErrorMacro("Invalid URL: \"" << urlstr << "\"");
     return false;
   }
 
diff --git a/IO/ODBC/vtkODBCQuery.cxx b/IO/ODBC/vtkODBCQuery.cxx
index b40801d318d0cff037210aa4200bf9a79eed5ff9..80331568b53c5ade11590c4c2b5934613cebaac5 100644
--- a/IO/ODBC/vtkODBCQuery.cxx
+++ b/IO/ODBC/vtkODBCQuery.cxx
@@ -526,7 +526,7 @@ bool vtkODBCQuery::SetQuery(const char* newQuery)
   }
   else
   {
-    vtkErrorMacro(<< error.c_str());
+    vtkErrorMacro(<< error);
     this->SetLastErrorText(error.c_str());
     return false;
   }
@@ -609,7 +609,7 @@ bool vtkODBCQuery::Execute()
           errbuf << "During vtkODBCQuery::Execute while looking up column " << i << ": "
                  << GetErrorMessage(SQL_HANDLE_STMT, this->Internals->Statement);
           this->SetLastErrorText(errbuf.str().c_str());
-          vtkErrorMacro(<< errbuf.str().c_str());
+          vtkErrorMacro(<< errbuf.str());
         }
 
         status = SQLColAttribute(
@@ -621,7 +621,7 @@ bool vtkODBCQuery::Execute()
           errbuf << "vtkODBCQuery::Execute: Unable to get unsigned flag for column " << i << ": "
                  << GetErrorMessage(SQL_HANDLE_STMT, this->Internals->Statement);
           this->SetLastErrorText(errbuf.str().c_str());
-          vtkErrorMacro(<< errbuf.str().c_str());
+          vtkErrorMacro(<< errbuf.str());
         }
 
         this->Internals->ColumnNames->SetValue(i, reinterpret_cast<const char*>(name));
diff --git a/IO/Parallel/vtkMultiBlockPLOT3DReader.cxx b/IO/Parallel/vtkMultiBlockPLOT3DReader.cxx
index 97bd4d1d30599306abc82f41f4140f7eb3b20b5f..47c38ad68bc92ce14a676a317c11c03f6533b375 100644
--- a/IO/Parallel/vtkMultiBlockPLOT3DReader.cxx
+++ b/IO/Parallel/vtkMultiBlockPLOT3DReader.cxx
@@ -2098,7 +2098,7 @@ int vtkMultiBlockPLOT3DReader::ReadArrays(
       mp->Broadcast(&error, 1, 0);
       if (error)
       {
-        vtkErrorMacro("Error reading file " << fname.c_str());
+        vtkErrorMacro("Error reading file " << fname);
         this->ClearGeometryCache();
         return 0;
       }
diff --git a/IO/Parallel/vtkPlot3DMetaReader.cxx b/IO/Parallel/vtkPlot3DMetaReader.cxx
index c36f41a69eb05e7857b289bb82b4e40239ad3f9c..65f1fad401829934e21d3e5abbe51d8d82eca9b4 100644
--- a/IO/Parallel/vtkPlot3DMetaReader.cxx
+++ b/IO/Parallel/vtkPlot3DMetaReader.cxx
@@ -133,7 +133,7 @@ void vtkPlot3DMetaReader::SetByteOrder(Json::Value* val)
   }
   else
   {
-    vtkErrorMacro("Unrecognized byte order: " << value.c_str()
+    vtkErrorMacro("Unrecognized byte order: " << value
                                               << ". Valid options are \"little\" and \"big\"."
                                                  " Setting to little endian");
     this->Reader->SetByteOrderToLittleEndian();
@@ -154,7 +154,7 @@ void vtkPlot3DMetaReader::SetLanguage(Json::Value* val)
   }
   else
   {
-    vtkErrorMacro("Unrecognized language: " << value.c_str()
+    vtkErrorMacro("Unrecognized language: " << value
                                             << ". Valid options are \"fortran\" and \"C\"."
                                                " Setting to little fortran");
     this->Reader->HasByteCountOn();
@@ -210,7 +210,7 @@ void vtkPlot3DMetaReader::SetFormat(Json::Value* val)
   }
   else
   {
-    vtkErrorMacro("Unrecognized file type: " << value.c_str()
+    vtkErrorMacro("Unrecognized file type: " << value
                                              << ". Valid options are \"binary\" and \"ascii\"."
                                                 " Setting to binary");
     this->Reader->BinaryFileOn();
@@ -376,8 +376,7 @@ int vtkPlot3DMetaReader::RequestInformation(vtkInformation* vtkNotUsed(request),
     }
     else
     {
-      vtkErrorMacro(
-        "Syntax error in file. Option \"" << memberIterator->c_str() << "\" is not valid.");
+      vtkErrorMacro("Syntax error in file. Option \"" << *memberIterator << "\" is not valid.");
     }
   }
 
diff --git a/IO/ParallelXML/vtkXMLPartitionedDataSetCollectionWriter.cxx b/IO/ParallelXML/vtkXMLPartitionedDataSetCollectionWriter.cxx
index f356ffa30a0d3c1bb33ef4307a6dddd3cd6fadf8..9b0726b5f5fab71a7824de7932c9e62ca22b97aa 100644
--- a/IO/ParallelXML/vtkXMLPartitionedDataSetCollectionWriter.cxx
+++ b/IO/ParallelXML/vtkXMLPartitionedDataSetCollectionWriter.cxx
@@ -89,7 +89,7 @@ int vtkXMLPartitionedDataSetCollectionWriter::RequestData(
   if (!this->MakeDirectory(path))
   {
     this->SetErrorCode(vtkErrorCode::OutOfDiskSpaceError);
-    vtkErrorMacro("Failed to create directory '" << path.c_str() << "'.");
+    vtkErrorMacro("Failed to create directory '" << path << "'.");
     return 0;
   }
 
@@ -99,7 +99,7 @@ int vtkXMLPartitionedDataSetCollectionWriter::RequestData(
   if (!this->MakeDirectory(absoluteArtifactsDir))
   {
     this->SetErrorCode(vtkErrorCode::OutOfDiskSpaceError);
-    vtkErrorMacro("Failed to create directory '" << absoluteArtifactsDir.c_str() << "'.");
+    vtkErrorMacro("Failed to create directory '" << absoluteArtifactsDir << "'.");
     return 0;
   }
   this->AddRootArtifact(absoluteArtifactsDir, /*isDir*/ true);
diff --git a/IO/ParallelXML/vtkXMLPartitionedDataSetWriter.cxx b/IO/ParallelXML/vtkXMLPartitionedDataSetWriter.cxx
index 9db00805fae075c8c9fef0de163a857d452ff970..581d9cb93696415841743c9051d286ef8d728100 100644
--- a/IO/ParallelXML/vtkXMLPartitionedDataSetWriter.cxx
+++ b/IO/ParallelXML/vtkXMLPartitionedDataSetWriter.cxx
@@ -86,7 +86,7 @@ int vtkXMLPartitionedDataSetWriter::RequestData(
   if (!this->MakeDirectory(path))
   {
     this->SetErrorCode(vtkErrorCode::OutOfDiskSpaceError);
-    vtkErrorMacro("Failed to create directory '" << path.c_str() << "'.");
+    vtkErrorMacro("Failed to create directory '" << path << "'.");
     return 0;
   }
 
@@ -97,7 +97,7 @@ int vtkXMLPartitionedDataSetWriter::RequestData(
   if (!this->MakeDirectory(absoluteArtifactsDir))
   {
     this->SetErrorCode(vtkErrorCode::OutOfDiskSpaceError);
-    vtkErrorMacro("Failed to create directory '" << absoluteArtifactsDir.c_str() << "'.");
+    vtkErrorMacro("Failed to create directory '" << absoluteArtifactsDir << "'.");
     return 0;
   }
   this->AddRootArtifact(absoluteArtifactsDir, /*isDir*/ true);
diff --git a/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLDatabase.cxx b/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLDatabase.cxx
index 15c4d6127982d2d7347005ea2b7b2a90c1565dfa..02991c80829d9a4842c666e321c636b78bdf3fb9 100644
--- a/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLDatabase.cxx
+++ b/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLDatabase.cxx
@@ -152,7 +152,7 @@ int TestPostgreSQLDatabase(int /*argc*/, char* /*argv*/[])
       {
         cerr << ", ";
       }
-      cerr << query->DataValue(field).ToString().c_str();
+      cerr << query->DataValue(field).ToString();
     }
     cerr << endl;
   }
@@ -183,7 +183,7 @@ int TestPostgreSQLDatabase(int /*argc*/, char* /*argv*/[])
       {
         cerr << ", ";
       }
-      cerr << va->GetValue(field).ToString().c_str();
+      cerr << va->GetValue(field).ToString();
     }
     cerr << endl;
   }
@@ -338,7 +338,7 @@ int TestPostgreSQLDatabase(int /*argc*/, char* /*argv*/[])
           }
           cerr << "     Column: ";
         }
-        cerr << query->DataValue(field).ToString().c_str();
+        cerr << query->DataValue(field).ToString();
       }
       cerr << endl;
     }
@@ -464,7 +464,7 @@ int TestPostgreSQLDatabase(int /*argc*/, char* /*argv*/[])
     return 1;
   }
 
-  cerr << query->DataValue(0).ToString().c_str() << "> ";
+  cerr << query->DataValue(0).ToString() << "> ";
   cerr << " done." << endl;
 
   // 9. Drop tables
@@ -492,7 +492,7 @@ int TestPostgreSQLDatabase(int /*argc*/, char* /*argv*/[])
 
   if (!db->DropDatabase(realDatabase.c_str()))
   {
-    cout << "Drop of \"" << realDatabase.c_str() << "\" failed.\n";
+    cout << "Drop of \"" << realDatabase << "\" failed.\n";
     cerr << "\"" << db->GetLastErrorText() << "\"" << endl;
   }
 
diff --git a/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLTableReadWrite.cxx b/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLTableReadWrite.cxx
index baf20f681f6a3e55295e281ee0d6dc15ced9a4ab..bcf5a8900a039c8f69865b60312a9a62423f9487 100644
--- a/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLTableReadWrite.cxx
+++ b/IO/PostgreSQL/Testing/Cxx/TestPostgreSQLTableReadWrite.cxx
@@ -109,7 +109,7 @@ int TestPostgreSQLTableReadWrite(int argc, char* argv[])
 
   if (!db->DropDatabase(realDatabase.c_str()))
   {
-    cout << "Drop of \"" << realDatabase.c_str() << "\" failed.\n";
+    cout << "Drop of \"" << realDatabase << "\" failed.\n";
     cerr << "\"" << db->GetLastErrorText() << "\"" << endl;
   }
 
diff --git a/IO/PostgreSQL/vtkPostgreSQLDatabase.cxx b/IO/PostgreSQL/vtkPostgreSQLDatabase.cxx
index 94b489cac3f87f2f6a67a99f8102cede9e4bd73d..240957dfeb68b159f83df14d233a075ed75e75f3 100644
--- a/IO/PostgreSQL/vtkPostgreSQLDatabase.cxx
+++ b/IO/PostgreSQL/vtkPostgreSQLDatabase.cxx
@@ -385,7 +385,7 @@ bool vtkPostgreSQLDatabase::ParseURL(const char* URL)
   if (!vtksys::SystemTools::ParseURL(
         urlstr, protocol, username, password, hostname, dataport, database))
   {
-    vtkErrorMacro("Invalid URL: \"" << urlstr.c_str() << "\"");
+    vtkErrorMacro("Invalid URL: \"" << urlstr << "\"");
     return false;
   }
 
diff --git a/IO/SQL/Testing/Cxx/TestSQLiteDatabase.cxx b/IO/SQL/Testing/Cxx/TestSQLiteDatabase.cxx
index 4171666a0d681d9efa4e941aa278b660f912617c..cf442afdc2acac7bd4c5923667f06d01cc489647 100644
--- a/IO/SQL/Testing/Cxx/TestSQLiteDatabase.cxx
+++ b/IO/SQL/Testing/Cxx/TestSQLiteDatabase.cxx
@@ -227,7 +227,7 @@ int TestSQLiteDatabase(int /*argc*/, char* /*argv*/[])
       {
         cerr << ", ";
       }
-      cerr << query->DataValue(field).ToString().c_str();
+      cerr << query->DataValue(field).ToString();
     }
     cerr << endl;
   }
@@ -256,7 +256,7 @@ int TestSQLiteDatabase(int /*argc*/, char* /*argv*/[])
       {
         cerr << ", ";
       }
-      cerr << va->GetValue(field).ToString().c_str();
+      cerr << va->GetValue(field).ToString();
     }
     cerr << endl;
   }
@@ -388,7 +388,7 @@ int TestSQLiteDatabase(int /*argc*/, char* /*argv*/[])
     return 1;
   }
 
-  cerr << query->DataValue(0).ToString().c_str() << "> ";
+  cerr << query->DataValue(0).ToString() << "> ";
   cerr << " done." << endl;
 
   // 6. Drop tables
diff --git a/IO/SQL/vtkSQLDatabase.cxx b/IO/SQL/vtkSQLDatabase.cxx
index b8818dd94b48bc5eaba1a63058dc8cfab6f72701..954ec51c24dae2b5a867865a5435177a012497ec 100644
--- a/IO/SQL/vtkSQLDatabase.cxx
+++ b/IO/SQL/vtkSQLDatabase.cxx
@@ -373,7 +373,7 @@ vtkSQLDatabase* vtkSQLDatabase::CreateFromURL(const char* URL)
   // SQLite is a bit special so lets get that out of the way :)
   if (!vtksys::SystemTools::ParseURLProtocol(urlstr, protocol, dataglom))
   {
-    vtkGenericWarningMacro("Invalid URL (no protocol found): \"" << urlstr.c_str() << "\"");
+    vtkGenericWarningMacro("Invalid URL (no protocol found): \"" << urlstr << "\"");
     dbURLCritSec.unlock();
     return nullptr;
   }
@@ -389,7 +389,7 @@ vtkSQLDatabase* vtkSQLDatabase::CreateFromURL(const char* URL)
   if (!vtksys::SystemTools::ParseURL(
         urlstr, protocol, username, unused, hostname, dataport, database))
   {
-    vtkGenericWarningMacro("Invalid URL (other components missing): \"" << urlstr.c_str() << "\"");
+    vtkGenericWarningMacro("Invalid URL (other components missing): \"" << urlstr << "\"");
     dbURLCritSec.unlock();
     return nullptr;
   }
@@ -403,7 +403,7 @@ vtkSQLDatabase* vtkSQLDatabase::CreateFromURL(const char* URL)
 
   if (!db)
   {
-    vtkGenericWarningMacro("Unsupported protocol: " << protocol.c_str());
+    vtkGenericWarningMacro("Unsupported protocol: " << protocol);
   }
   dbURLCritSec.unlock();
   return db;
diff --git a/IO/SQL/vtkSQLDatabaseGraphSource.cxx b/IO/SQL/vtkSQLDatabaseGraphSource.cxx
index f7465aa6c20c84844035635c9f620d204870c122..86396ed31817e1c5dee071fa19a4cdae1a8a8146 100644
--- a/IO/SQL/vtkSQLDatabaseGraphSource.cxx
+++ b/IO/SQL/vtkSQLDatabaseGraphSource.cxx
@@ -273,7 +273,7 @@ int vtkSQLDatabaseGraphSource::RequestData(
     this->Implementation->Database = vtkSQLDatabase::CreateFromURL(this->Implementation->URL);
     if (!this->Implementation->Database)
     {
-      vtkErrorMacro(<< "Error creating database using URL: " << this->Implementation->URL.c_str());
+      vtkErrorMacro(<< "Error creating database using URL: " << this->Implementation->URL);
       return 0;
     }
 
@@ -282,7 +282,7 @@ int vtkSQLDatabaseGraphSource::RequestData(
       this->Implementation->Database->Delete();
       this->Implementation->Database = 0;
 
-      vtkErrorMacro(<< "Error opening database: " << this->Implementation->URL.c_str());
+      vtkErrorMacro(<< "Error opening database: " << this->Implementation->URL);
       return 0;
     }
   }
@@ -304,8 +304,7 @@ int vtkSQLDatabaseGraphSource::RequestData(
   this->Implementation->EdgeQuery->SetQuery(this->Implementation->EdgeQueryString.c_str());
   if (!this->Implementation->EdgeQuery->Execute())
   {
-    vtkErrorMacro(<< "Error executing edge query: "
-                  << this->Implementation->EdgeQueryString.c_str());
+    vtkErrorMacro(<< "Error executing edge query: " << this->Implementation->EdgeQueryString);
     return 0;
   }
 
@@ -337,8 +336,7 @@ int vtkSQLDatabaseGraphSource::RequestData(
     this->Implementation->VertexQuery->SetQuery(this->Implementation->VertexQueryString.c_str());
     if (!this->Implementation->VertexQuery->Execute())
     {
-      vtkErrorMacro(<< "Error executing vertex query: "
-                    << this->Implementation->VertexQueryString.c_str());
+      vtkErrorMacro(<< "Error executing vertex query: " << this->Implementation->VertexQueryString);
       return 0;
     }
 
diff --git a/IO/SQL/vtkSQLDatabaseTableSource.cxx b/IO/SQL/vtkSQLDatabaseTableSource.cxx
index 76c408e4207d1ee6972f2ebcec0df86780d50a69..5bac3ab42b7518d6d2cf4071f366491be4adc909 100644
--- a/IO/SQL/vtkSQLDatabaseTableSource.cxx
+++ b/IO/SQL/vtkSQLDatabaseTableSource.cxx
@@ -182,7 +182,7 @@ int vtkSQLDatabaseTableSource::RequestData(
     this->Implementation->Database = vtkSQLDatabase::CreateFromURL(this->Implementation->URL);
     if (!this->Implementation->Database)
     {
-      vtkErrorMacro(<< "Error creating database using URL: " << this->Implementation->URL.c_str());
+      vtkErrorMacro(<< "Error creating database using URL: " << this->Implementation->URL);
       return 0;
     }
 
@@ -191,7 +191,7 @@ int vtkSQLDatabaseTableSource::RequestData(
       this->Implementation->Database->Delete();
       this->Implementation->Database = nullptr;
 
-      vtkErrorMacro(<< "Error opening database: " << this->Implementation->URL.c_str());
+      vtkErrorMacro(<< "Error opening database: " << this->Implementation->URL);
       return 0;
     }
   }
@@ -215,7 +215,7 @@ int vtkSQLDatabaseTableSource::RequestData(
   this->Implementation->Query->SetQuery(this->Implementation->QueryString.c_str());
   if (!this->Implementation->Query->Execute())
   {
-    vtkErrorMacro(<< "Error executing query: " << this->Implementation->QueryString.c_str());
+    vtkErrorMacro(<< "Error executing query: " << this->Implementation->QueryString);
     return 0;
   }
 
diff --git a/IO/SQL/vtkSQLiteDatabase.cxx b/IO/SQL/vtkSQLiteDatabase.cxx
index 8b0ddd8a6087c8b0a2498595958451481a2e31ed..f2408e205297a420ccb114e0a849dfcd814aa695 100644
--- a/IO/SQL/vtkSQLiteDatabase.cxx
+++ b/IO/SQL/vtkSQLiteDatabase.cxx
@@ -454,7 +454,7 @@ bool vtkSQLiteDatabase::ParseURL(const char* URL)
 
   if (!vtksys::SystemTools::ParseURLProtocol(urlstr, protocol, dataglom))
   {
-    vtkErrorMacro("Invalid URL: \"" << urlstr.c_str() << "\"");
+    vtkErrorMacro("Invalid URL: \"" << urlstr << "\"");
     return false;
   }
 
diff --git a/IO/SQL/vtkSQLiteQuery.cxx b/IO/SQL/vtkSQLiteQuery.cxx
index a8465dd81a2240c05fa096e38ca9262db45916f7..75e57c8334b2ecbf5a67fc8b7dd63fc3281da0d8 100644
--- a/IO/SQL/vtkSQLiteQuery.cxx
+++ b/IO/SQL/vtkSQLiteQuery.cxx
@@ -649,7 +649,7 @@ bool vtkSQLiteQuery::BindIntegerParameter(int index, int value)
     std::ostringstream errormessage;
     errormessage << "sqlite_bind_int returned error: " << status;
     this->SetLastErrorText(errormessage.str().c_str());
-    vtkErrorMacro(<< errormessage.str().c_str());
+    vtkErrorMacro(<< errormessage.str());
     return false;
   }
   return true;
diff --git a/IO/VeraOut/vtkVeraOutReader.cxx b/IO/VeraOut/vtkVeraOutReader.cxx
index 84df276a6239b00dd5aa4b50ea4802f93e22ec76..6a300429ffa582c87948314a807c3434aafa22c5 100644
--- a/IO/VeraOut/vtkVeraOutReader.cxx
+++ b/IO/VeraOut/vtkVeraOutReader.cxx
@@ -120,8 +120,7 @@ public:
     }
     if ((this->FileId = H5Fopen(this->FileName.c_str(), H5F_ACC_RDONLY, fileAccessPropListID)) < 0)
     {
-      vtkErrorWithObjectMacro(
-        this->Owner, "Cannot be a VERA file (" << this->FileName.c_str() << ")");
+      vtkErrorWithObjectMacro(this->Owner, "Cannot be a VERA file (" << this->FileName << ")");
       return false;
     }
     H5Pclose(fileAccessPropListID);
@@ -521,8 +520,8 @@ public:
       hid_t datasetId;
       if ((datasetId = H5Dopen(groupId, dsName.c_str())) < 0)
       {
-        vtkErrorWithObjectMacro(this->Owner,
-          "DataSet " << dsName.c_str() << " in group " << groupName << " don't want to open.");
+        vtkErrorWithObjectMacro(
+          this->Owner, "DataSet " << dsName << " in group " << groupName << " don't want to open.");
         continue;
       }
 
@@ -711,7 +710,7 @@ public:
     hid_t groupId = -1;
     if ((groupId = H5Gopen(this->FileId, stateGroupName.str().c_str())) < 0)
     {
-      vtkErrorWithObjectMacro(this->Owner, "Can't open Group " << stateGroupName.str().c_str());
+      vtkErrorWithObjectMacro(this->Owner, "Can't open Group " << stateGroupName.str());
       return;
     }
 
@@ -719,8 +718,7 @@ public:
     int status = H5Gget_info(groupId, &groupInfo);
     if (status < 0)
     {
-      vtkErrorWithObjectMacro(
-        this->Owner, "Can't get group info for " << stateGroupName.str().c_str());
+      vtkErrorWithObjectMacro(this->Owner, "Can't get group info for " << stateGroupName.str());
       return;
     }
 
diff --git a/IO/XML/Testing/Cxx/TestXMLUnstructuredGridReader.cxx b/IO/XML/Testing/Cxx/TestXMLUnstructuredGridReader.cxx
index b86d6d0338e6781d2b2cb23742c3093eb98115a2..b623bacc8496925ae05cf360614290f3d8f955e8 100644
--- a/IO/XML/Testing/Cxx/TestXMLUnstructuredGridReader.cxx
+++ b/IO/XML/Testing/Cxx/TestXMLUnstructuredGridReader.cxx
@@ -118,7 +118,7 @@ int TestXMLUnstructuredGridReader(int argc, char* argv[])
   std::string filename;
   filename = data_root;
   filename += "/Data/many_time_steps.vtu";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   vtkNew<vtkXMLUnstructuredGridReader> reader1;
   reader1->SetFileName(filename.c_str());
   reader1->Update();
@@ -134,7 +134,7 @@ int TestXMLUnstructuredGridReader(int argc, char* argv[])
   // and each piece contains a pyramid cell and a polyhedron cell.
   filename = data_root;
   filename += "/Data/polyhedron2pieces.vtu";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   vtkNew<vtkXMLUnstructuredGridReader> reader2;
   reader2->SetFileName(filename.c_str());
 
diff --git a/IO/XML/vtkXMLCompositeDataWriter.cxx b/IO/XML/vtkXMLCompositeDataWriter.cxx
index ff8654b7aa10cfb847afc1907ac2e8467f520b85..34e3b49c02a59e9053be08e1b661933016c0fad5 100644
--- a/IO/XML/vtkXMLCompositeDataWriter.cxx
+++ b/IO/XML/vtkXMLCompositeDataWriter.cxx
@@ -370,8 +370,7 @@ void vtkXMLCompositeDataWriter::MakeDirectory(const char* name)
   if (!vtksys::SystemTools::MakeDirectory(name))
   {
     vtkErrorMacro(<< "Sorry unable to create directory: " << name << endl
-                  << "Last system error was: "
-                  << vtksys::SystemTools::GetLastSystemError().c_str());
+                  << "Last system error was: " << vtksys::SystemTools::GetLastSystemError());
   }
 }
 
@@ -381,8 +380,7 @@ void vtkXMLCompositeDataWriter::RemoveADirectory(const char* name)
   if (!vtksys::SystemTools::RemoveADirectory(name))
   {
     vtkErrorMacro(<< "Sorry unable to remove a directory: " << name << endl
-                  << "Last system error was: "
-                  << vtksys::SystemTools::GetLastSystemError().c_str());
+                  << "Last system error was: " << vtksys::SystemTools::GetLastSystemError());
   }
 }
 
@@ -589,8 +587,7 @@ vtkStdString vtkXMLCompositeDataWriter::CreatePieceFileName(int piece)
   }
 
   std::ostringstream stream;
-  stream << this->Internal->FilePrefix.c_str() << "/" << this->Internal->FilePrefix.c_str() << "_"
-         << piece << ".";
+  stream << this->Internal->FilePrefix << "/" << this->Internal->FilePrefix << "_" << piece << ".";
   const char* ext = this->GetDefaultFileExtensionForDataSet(this->Internal->DataTypes[piece]);
   stream << (ext ? ext : "");
   return stream.str();
diff --git a/IO/XML/vtkXMLPStructuredDataReader.cxx b/IO/XML/vtkXMLPStructuredDataReader.cxx
index 8c86c99ee4969c3ef73566fe7eb098dacdc32d42..56fb9027e529a26f0f03ef8b304bb7ec7235195e 100644
--- a/IO/XML/vtkXMLPStructuredDataReader.cxx
+++ b/IO/XML/vtkXMLPStructuredDataReader.cxx
@@ -426,7 +426,7 @@ int vtkXMLPStructuredDataReader::ComputePieceSubExtents()
       }
     }
     e_with_warning_C4701 << "The UpdateExtent cannot be filled.";
-    vtkErrorMacro(<< e_with_warning_C4701.str().c_str());
+    vtkErrorMacro(<< e_with_warning_C4701.str());
     return 0;
   }
 
diff --git a/IO/XML/vtkXMLWriter.cxx b/IO/XML/vtkXMLWriter.cxx
index 20e8a85bb495a1911fc381b0eb0ef579782c784b..d2f5f8af5e903213c27a63bbfb9b130ee1706374 100644
--- a/IO/XML/vtkXMLWriter.cxx
+++ b/IO/XML/vtkXMLWriter.cxx
@@ -3075,7 +3075,7 @@ void vtkXMLWriter::WritePrimaryElementAttributes(ostream& os, vtkIndent indent)
     for (int i = 0; i < this->NumberOfTimeSteps; i++)
     {
       this->NumberOfTimeValues[i] = os.tellp();
-      os << blankline.c_str() << "\n";
+      os << blankline << "\n";
     }
     os << "\"";
   }
diff --git a/Infovis/Core/Testing/Cxx/TestExtractSelectedTree.cxx b/Infovis/Core/Testing/Cxx/TestExtractSelectedTree.cxx
index de8e4f7e70499b99537b323688c00db41e619a19..42415747baa2e99cab087f36e4a28a4c99728feb 100644
--- a/Infovis/Core/Testing/Cxx/TestExtractSelectedTree.cxx
+++ b/Infovis/Core/Testing/Cxx/TestExtractSelectedTree.cxx
@@ -102,7 +102,7 @@ int TestExtractSelectedTree(int, char*[])
       vtkStdString n = nodename->GetValue(4);
       if (n != "d")
       {
-        std::cerr << "The node name should be \'d\', but appear to be: " << n.c_str() << std::endl;
+        std::cerr << "The node name should be \'d\', but appear to be: " << n << std::endl;
         return EXIT_FAILURE;
       }
     }
diff --git a/Infovis/Core/vtkTableToArray.cxx b/Infovis/Core/vtkTableToArray.cxx
index 9a005ff05d2a32e408b6bb69d722de26181532c0..1ff8604adf7fc69e431c9f3fd98d1b7a48058a21 100644
--- a/Infovis/Core/vtkTableToArray.cxx
+++ b/Infovis/Core/vtkTableToArray.cxx
@@ -133,8 +133,7 @@ int vtkTableToArray::RequestData(
         table->GetColumnByName(this->Implementation->Columns[i].ToString().c_str()));
       if (!columns.back())
       {
-        vtkErrorMacro(<< "Missing table column: "
-                      << this->Implementation->Columns[i].ToString().c_str());
+        vtkErrorMacro(<< "Missing table column: " << this->Implementation->Columns[i].ToString());
         return 0;
       }
     }
diff --git a/Infovis/Core/vtkTableToGraph.cxx b/Infovis/Core/vtkTableToGraph.cxx
index b36561582ee3f06bd3ebb3ca43dc04c6c6fd335c..3905806309867cc36dc36407e0e8a98a082a0c06 100644
--- a/Infovis/Core/vtkTableToGraph.cxx
+++ b/Infovis/Core/vtkTableToGraph.cxx
@@ -503,7 +503,7 @@ int vtkTableToGraph::RequestData(
       vtkAbstractArray* arr = edgeTable->GetColumnByName(column);
       if (!arr)
       {
-        vtkErrorMacro("vtkTableToGraph cannot find edge array: " << column.c_str());
+        vtkErrorMacro("vtkTableToGraph cannot find edge array: " << column);
         vertexTable->Delete();
         return 0;
       }
@@ -599,7 +599,7 @@ int vtkTableToGraph::RequestData(
         vtkAbstractArray* arr = vertexTable->GetColumnByName(domain);
         if (!arr)
         {
-          vtkErrorMacro("vtkTableToGraph cannot find vertex array: " << domain.c_str());
+          vtkErrorMacro("vtkTableToGraph cannot find vertex array: " << domain);
           return 0;
         }
         for (vtkIdType i = 0; i < arr->GetNumberOfTuples(); ++i)
@@ -633,7 +633,7 @@ int vtkTableToGraph::RequestData(
         vtkAbstractArray* edgeArr = edgeTable->GetColumnByName(column);
         if (!edgeArr)
         {
-          vtkErrorMacro("vtkTableToGraph cannot find edge array: " << column.c_str());
+          vtkErrorMacro("vtkTableToGraph cannot find edge array: " << column);
           return 0;
         }
         switch (edgeArr->GetDataType())
@@ -731,7 +731,7 @@ int vtkTableToGraph::RequestData(
       vtkVariant valueSource;
       if (!columnSource)
       {
-        vtkErrorMacro("vtkTableToGraph cannot find array: " << columnNameSource.c_str());
+        vtkErrorMacro("vtkTableToGraph cannot find array: " << columnNameSource);
         return 0;
       }
       switch (columnSource->GetDataType())
@@ -742,7 +742,7 @@ int vtkTableToGraph::RequestData(
       vtkVariant valueTarget;
       if (!columnTarget)
       {
-        vtkErrorMacro("vtkTableToGraph cannot find array: " << columnNameTarget.c_str());
+        vtkErrorMacro("vtkTableToGraph cannot find array: " << columnNameTarget);
         return 0;
       }
       switch (columnTarget->GetDataType())
diff --git a/Infovis/Core/vtkTableToSparseArray.cxx b/Infovis/Core/vtkTableToSparseArray.cxx
index b2ef16dd81c7c0fed096cd88146e0086f68fd134..012196c48a0418d58217eec6b6bcf4a5c9d5dbc1 100644
--- a/Infovis/Core/vtkTableToSparseArray.cxx
+++ b/Infovis/Core/vtkTableToSparseArray.cxx
@@ -154,8 +154,7 @@ int vtkTableToSparseArray::RequestData(
     coordinates[i] = table->GetColumnByName(this->Implementation->Coordinates[i].c_str());
     if (!coordinates[i])
     {
-      vtkErrorMacro(<< "missing coordinate array: "
-                    << this->Implementation->Coordinates[i].c_str());
+      vtkErrorMacro(<< "missing coordinate array: " << this->Implementation->Coordinates[i]);
     }
   }
   // See http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html
@@ -175,7 +174,7 @@ int vtkTableToSparseArray::RequestData(
   vtkAbstractArray* const values = table->GetColumnByName(this->Implementation->Values.c_str());
   if (!values)
   {
-    vtkErrorMacro(<< "missing value array: " << this->Implementation->Values.c_str());
+    vtkErrorMacro(<< "missing value array: " << this->Implementation->Values);
     return 0;
   }
 
diff --git a/Rendering/Core/vtkGenericVertexAttributeMapping.cxx b/Rendering/Core/vtkGenericVertexAttributeMapping.cxx
index 6b2ad161c69179052e25b6d50ccb2514cf2a7e90..abd75bda685d7f9d90e346f349a263b7c5c26561 100644
--- a/Rendering/Core/vtkGenericVertexAttributeMapping.cxx
+++ b/Rendering/Core/vtkGenericVertexAttributeMapping.cxx
@@ -82,7 +82,7 @@ void vtkGenericVertexAttributeMapping::AddMapping(
 
   if (this->RemoveMapping(attributeName.str().c_str()))
   {
-    vtkWarningMacro("Replacing existing mapping for attribute " << attributeName.str().c_str());
+    vtkWarningMacro("Replacing existing mapping for attribute " << attributeName.str());
   }
 
   vtkInternal::vtkInfo info;
@@ -183,7 +183,7 @@ void vtkGenericVertexAttributeMapping::PrintSelf(ostream& os, vtkIndent indent)
   vtkInternal::VectorType::iterator iter;
   for (iter = this->Internal->Mappings.begin(); iter != this->Internal->Mappings.end(); ++iter)
   {
-    os << indent << "Mapping: " << iter->AttributeName.c_str() << ", " << iter->ArrayName.c_str()
-       << ", " << iter->FieldAssociation << ", " << iter->Component << endl;
+    os << indent << "Mapping: " << iter->AttributeName << ", " << iter->ArrayName << ", "
+       << iter->FieldAssociation << ", " << iter->Component << endl;
   }
 }
diff --git a/Rendering/LICOpenGL2/Testing/Cxx/TestSurfaceLIC.cxx b/Rendering/LICOpenGL2/Testing/Cxx/TestSurfaceLIC.cxx
index d308d1545d7dd88949dbc966928487df53c3f888..ae65f58968458582407004eca883f4e7a1a91588 100644
--- a/Rendering/LICOpenGL2/Testing/Cxx/TestSurfaceLIC.cxx
+++ b/Rendering/LICOpenGL2/Testing/Cxx/TestSurfaceLIC.cxx
@@ -210,7 +210,7 @@ int TestSurfaceLIC(int argc, char* argv[])
 
   if (!dataObj) // || dataObj->GetNumberOfElements(vtkDataObject::POINT) == 0)
   {
-    cerr << "Error reading file: '" << filename.c_str() << "'" << endl;
+    cerr << "Error reading file: '" << filename << "'" << endl;
     vtkAlgorithm::SetDefaultExecutivePrototype(nullptr);
     return 1;
   }
diff --git a/Rendering/Label/vtkDynamic2DLabelMapper.cxx b/Rendering/Label/vtkDynamic2DLabelMapper.cxx
index 865d1c75fd4eb18a994986178486689b709db568..fe6cbf4c3d283e1f59d535518e5d449fd18bee4f 100644
--- a/Rendering/Label/vtkDynamic2DLabelMapper.cxx
+++ b/Rendering/Label/vtkDynamic2DLabelMapper.cxx
@@ -321,7 +321,7 @@ void vtkDynamic2DLabelMapper::RenderOpaqueGeometry(vtkViewport* viewport, vtkAct
         FormatString = "BUG - COULDN'T DETECT DATA TYPE";
       }
 
-      vtkDebugMacro(<< "Using default format string " << FormatString.c_str());
+      vtkDebugMacro(<< "Using default format string " << FormatString);
     } // Done building default format string
 
     this->NumberOfLabels = dsInput ? dsInput->GetNumberOfPoints() : gInput->GetNumberOfVertices();
diff --git a/Rendering/Label/vtkLabelPlacer.cxx b/Rendering/Label/vtkLabelPlacer.cxx
index 0813520e7b8b6df3077713193cefcbd02ee7f564..c28ee88e652b1f422afcae22458960471d885f1c 100644
--- a/Rendering/Label/vtkLabelPlacer.cxx
+++ b/Rendering/Label/vtkLabelPlacer.cxx
@@ -716,7 +716,7 @@ int vtkLabelPlacer::RequestData(vtkInformation* vtkNotUsed(request),
       if (labelType == 0)
       {
         vtkDebugMacro("Area: " << renderedLabelArea << "  /  " << allowableLabelArea << " \""
-                               << nameArr->GetValue(inIter->GetLabelId()).c_str() << "\"");
+                               << nameArr->GetValue(inIter->GetLabelId()) << "\"");
       }
       else
       {
@@ -735,7 +735,7 @@ int vtkLabelPlacer::RequestData(vtkInformation* vtkNotUsed(request),
         if (vtkLabelPlacer::Internal::DumpPlaced)
         {
           vtkDebugMacro(<< ll[0] << " -- " << ur[0] << ", " << ll[1] << " -- " << ur[1] << ": "
-                        << nameArr->GetValue(inIter->GetLabelId()).c_str());
+                        << nameArr->GetValue(inIter->GetLabelId()));
         }
         switch (coordSys)
         {
diff --git a/Rendering/Label/vtkLabelSizeCalculator.cxx b/Rendering/Label/vtkLabelSizeCalculator.cxx
index f32d875bbc06c8a52ab5ea6c55be0623a2b7fe05..7af9106f240b939d931199dfeac018bfe05831b9 100644
--- a/Rendering/Label/vtkLabelSizeCalculator.cxx
+++ b/Rendering/Label/vtkLabelSizeCalculator.cxx
@@ -235,7 +235,7 @@ vtkIntArray* vtkLabelSizeCalculator::LabelSizesForArray(
     if (this->GetDebug())
     {
       cout << "LSC: " << bds[0] << " " << bds[1] << " " << bds[2] << " " << bds[3] << " \""
-           << labels->GetVariantValue(i).ToString().c_str() << "\"\n";
+           << labels->GetVariantValue(i).ToString() << "\"\n";
     }
 
     bds += 4;
diff --git a/Rendering/Label/vtkLabeledDataMapper.cxx b/Rendering/Label/vtkLabeledDataMapper.cxx
index a5e9ceece2a0d5ca92f3d699011e752e7f0c3cbf..5d7e10c01bb6f499b11df370c71b3f6fe40ae002 100644
--- a/Rendering/Label/vtkLabeledDataMapper.cxx
+++ b/Rendering/Label/vtkLabeledDataMapper.cxx
@@ -538,7 +538,7 @@ void vtkLabeledDataMapper::BuildLabelsInternal(vtkDataSet* input)
       FormatString = "BUG - COULDN'T DETECT DATA TYPE";
     }
 
-    vtkDebugMacro(<< "Using default format string " << FormatString.c_str());
+    vtkDebugMacro(<< "Using default format string " << FormatString);
 
   } // Done building default format string
 
diff --git a/Rendering/OpenGL2/vtkOpenGLError.h.in b/Rendering/OpenGL2/vtkOpenGLError.h.in
index a6f853815b4333450c00d78f5ecbc1b00c4cafe0..eab0a28fece9c55c22597b2bf54c028df74f48f0 100644
--- a/Rendering/OpenGL2/vtkOpenGLError.h.in
+++ b/Rendering/OpenGL2/vtkOpenGLError.h.in
@@ -204,7 +204,7 @@ bool vtkOpenGLCheckErrors(const char* headerMessage = "")
   {
     std::ostringstream oss;
     vtkPrintOpenGLErrors(oss, maxNumErrors, numErrors, errCode, errDesc);
-    vtkGenericWarningMacro(<< headerMessage << oss.str().c_str());
+    vtkGenericWarningMacro(<< headerMessage << oss.str());
     return false;
   }
   return true;
@@ -271,7 +271,7 @@ void vtkClearOpenGLErrors(const unsigned int maxErrors = 16)
           errCode,                                   \
           errDesc);                                  \
                                                      \
-    ostr(<< message << " " << oss.str().c_str());    \
+    ostr(<< message << " " << oss.str());            \
   }                                                \
 }
 # define vtkOpenGLCheckErrorMacro(message) \
diff --git a/Rendering/OpenGL2/vtkShaderProgram.cxx b/Rendering/OpenGL2/vtkShaderProgram.cxx
index 4313d49b6e9783d584f57df6c41a59d3f4ab2b10..b46123f411e6403604766f814bcc8e70a6a71ddb 100644
--- a/Rendering/OpenGL2/vtkShaderProgram.cxx
+++ b/Rendering/OpenGL2/vtkShaderProgram.cxx
@@ -405,7 +405,7 @@ bool vtkShaderProgram::Bind()
       else
       {
         vtksys::ofstream ofp(fname.c_str());
-        ofp << shaders[cc]->GetSource().c_str();
+        ofp << shaders[cc]->GetSource();
       }
     }
     this->CompileShader();
diff --git a/Rendering/OpenGL2/vtkWin32OpenGLRenderWindow.cxx b/Rendering/OpenGL2/vtkWin32OpenGLRenderWindow.cxx
index 0821045e2700c0a8aca92f848bfc5e3b274b7d3d..a20d3eae7a2dd8a61b9f9955e51d0d1cbe4570c0 100644
--- a/Rendering/OpenGL2/vtkWin32OpenGLRenderWindow.cxx
+++ b/Rendering/OpenGL2/vtkWin32OpenGLRenderWindow.cxx
@@ -264,7 +264,7 @@ void vtkWin32OpenGLRenderWindow::MakeCurrent()
       if (lpMsgBuf)
       {
         std::string message = vtksys::Encoding::ToNarrow((LPWSTR)&lpMsgBuf);
-        vtkErrorMacro("wglMakeCurrent failed in MakeCurrent(), error: " << message.c_str());
+        vtkErrorMacro("wglMakeCurrent failed in MakeCurrent(), error: " << message);
         ::LocalFree(lpMsgBuf);
       }
     }
diff --git a/Rendering/ParallelLIC/vtkParallelTimer.cxx b/Rendering/ParallelLIC/vtkParallelTimer.cxx
index 613a7ecb830c163f3ab1af4f600d7d7c80286f8c..959ae327018800814bd9f437ff460f30e9ef122a 100644
--- a/Rendering/ParallelLIC/vtkParallelTimer.cxx
+++ b/Rendering/ParallelLIC/vtkParallelTimer.cxx
@@ -556,7 +556,7 @@ void vtkParallelTimer::EndEvent(const char* event)
   const string eEventId = event;
   if (sEventId != eEventId)
   {
-    vtkErrorMacro(<< "Event mismatch " << sEventId.c_str() << " != " << eEventId.c_str());
+    vtkErrorMacro(<< "Event mismatch " << sEventId << " != " << eEventId);
   }
   this->EventId.pop_back();
 #endif
diff --git a/Rendering/RayTracing/vtkOSPRayMaterialHelpers.cxx b/Rendering/RayTracing/vtkOSPRayMaterialHelpers.cxx
index 598872071314c2fa294b7fac64838ad2cb9acdb9..9c20ecdcab3183b842212edc4c562ebde78cbd7d 100644
--- a/Rendering/RayTracing/vtkOSPRayMaterialHelpers.cxx
+++ b/Rendering/RayTracing/vtkOSPRayMaterialHelpers.cxx
@@ -355,7 +355,7 @@ OSPMaterial vtkOSPRayMaterialHelpers::MakeMaterial(
   else
   {
     vtkGenericWarningMacro(
-      "Warning: unrecognized material \"" << implname.c_str() << "\", using a default obj");
+      "Warning: unrecognized material \"" << implname << "\", using a default obj");
     return NewMaterial(orn, oRenderer, "obj");
   }
 
diff --git a/Rendering/Volume/Testing/Cxx/ProjectedTetrahedraZoomIn.cxx b/Rendering/Volume/Testing/Cxx/ProjectedTetrahedraZoomIn.cxx
index 932dcf5d951b6a3994da0478b07f5724a9521bbf..e4fce47137896a9c5ee209d0e4c5f5e9ddb6e951 100644
--- a/Rendering/Volume/Testing/Cxx/ProjectedTetrahedraZoomIn.cxx
+++ b/Rendering/Volume/Testing/Cxx/ProjectedTetrahedraZoomIn.cxx
@@ -91,7 +91,7 @@ int ProjectedTetrahedraZoomIn(int argc, char* argv[])
   vtkStdString filename;
   filename = data_root;
   filename += "/Data/ironProt.vtk";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   VTK_CREATE(vtkStructuredPointsReader, reader);
   reader->SetFileName(filename.c_str());
 
@@ -99,7 +99,7 @@ int ProjectedTetrahedraZoomIn(int argc, char* argv[])
   // displayed as a polygonal mesh.
   filename = data_root;
   filename += "/Data/neghip.slc";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   VTK_CREATE(vtkSLCReader, reader2);
   reader2->SetFileName(filename.c_str());
 
diff --git a/Rendering/Volume/Testing/Cxx/TestMultiBlockUnstructuredGridVolumeMapper.cxx b/Rendering/Volume/Testing/Cxx/TestMultiBlockUnstructuredGridVolumeMapper.cxx
index e25edf09979f5514a38c137b6f2ad618db75104a..c08ec377f94a30e22e55d4481be0d468b95495f5 100644
--- a/Rendering/Volume/Testing/Cxx/TestMultiBlockUnstructuredGridVolumeMapper.cxx
+++ b/Rendering/Volume/Testing/Cxx/TestMultiBlockUnstructuredGridVolumeMapper.cxx
@@ -41,11 +41,11 @@ int TestMultiBlockUnstructuredGridVolumeMapper(int argc, char* argv[])
 
   // Create the reader for the data.
   // This is the data that will be volume rendered.
-  vtkLog(INFO, "Loading " << filename.c_str());
+  vtkLog(INFO, "Loading " << filename);
   vtkNew<vtkExodusIIReader> reader;
   if (!reader->CanReadFile(filename.c_str()))
   {
-    vtkLog(ERROR, "Error: cannot open file " << filename.c_str());
+    vtkLog(ERROR, "Error: cannot open file " << filename);
     return EXIT_FAILURE;
   }
   reader->SetFileName(filename.c_str());
diff --git a/Rendering/Volume/Testing/Cxx/TestProjectedTetrahedra.cxx b/Rendering/Volume/Testing/Cxx/TestProjectedTetrahedra.cxx
index 2730606ac0f6cf4ac514f4cb7661a20fbb54b69e..58223ca95e421773dee2bf279bb66bd9b3da1f6a 100644
--- a/Rendering/Volume/Testing/Cxx/TestProjectedTetrahedra.cxx
+++ b/Rendering/Volume/Testing/Cxx/TestProjectedTetrahedra.cxx
@@ -90,7 +90,7 @@ int TestProjectedTetrahedra(int argc, char* argv[])
   vtkStdString filename;
   filename = data_root;
   filename += "/Data/ironProt.vtk";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   vtkStructuredPointsReader* reader = vtkStructuredPointsReader::New();
   reader->SetFileName(filename.c_str());
 
@@ -98,7 +98,7 @@ int TestProjectedTetrahedra(int argc, char* argv[])
   // displayed as a polygonal mesh.
   filename = data_root;
   filename += "/Data/neghip.slc";
-  cout << "Loading " << filename.c_str() << endl;
+  cout << "Loading " << filename << endl;
   vtkSLCReader* reader2 = vtkSLCReader::New();
   reader2->SetFileName(filename.c_str());
 
diff --git a/Web/WebGLExporter/vtkPVWebGLExporter.cxx b/Web/WebGLExporter/vtkPVWebGLExporter.cxx
index d97f77eaa128f2cd715ae01d8bacdf6be317e2d9..7ced67c64d511773cd3aa83720c4727b8ef52bb2 100644
--- a/Web/WebGLExporter/vtkPVWebGLExporter.cxx
+++ b/Web/WebGLExporter/vtkPVWebGLExporter.cxx
@@ -74,7 +74,7 @@ void vtkPVWebGLExporter::WriteData()
   FILE* fp = vtksys::SystemTools::Fopen(metadatFile, "w");
   if (!fp)
   {
-    vtkErrorMacro(<< "unable to open JSON MetaData file " << metadatFile.c_str());
+    vtkErrorMacro(<< "unable to open JSON MetaData file " << metadatFile);
     return;
   }
   fputs(exporter->GenerateMetadata(), fp);
@@ -93,7 +93,7 @@ void vtkPVWebGLExporter::WriteData()
       {
         // Manage binary content
         std::stringstream filePath;
-        filePath << baseFileName.c_str() << "_" << obj->GetMD5().c_str() << "_" << part;
+        filePath << baseFileName << "_" << obj->GetMD5() << "_" << part;
         vtksys::ofstream binaryFile;
         binaryFile.open(filePath.str().c_str(), std::ios_base::out | std::ios_base::binary);
         binaryFile.write((const char*)obj->GetBinaryData(part), obj->GetBinarySize(part));
@@ -101,8 +101,7 @@ void vtkPVWebGLExporter::WriteData()
 
         // Manage Base64
         std::stringstream filePathBase64;
-        filePathBase64 << baseFileName.c_str() << "_" << obj->GetMD5().c_str() << "_" << part
-                       << ".base64";
+        filePathBase64 << baseFileName << "_" << obj->GetMD5() << "_" << part << ".base64";
         vtksys::ofstream base64File;
         unsigned char* output = new unsigned char[obj->GetBinarySize(part) * 2];
         int size =
diff --git a/Web/WebGLExporter/vtkWebGLExporter.cxx b/Web/WebGLExporter/vtkWebGLExporter.cxx
index 9223bfcbe8c9e9337b3951519d09c0cc86c3d60c..b6006cc49f628d56fe393dfb8e7c7c0ebc46f9ff 100644
--- a/Web/WebGLExporter/vtkWebGLExporter.cxx
+++ b/Web/WebGLExporter/vtkWebGLExporter.cxx
@@ -581,7 +581,7 @@ const char* vtkWebGLExporter::GenerateMetadata()
   max = std::max(max, this->SceneSize[2]);
   std::stringstream ss;
 
-  ss << "{\"id\":" << this->SceneId.c_str() << ",";
+  ss << "{\"id\":" << this->SceneId << ",";
   ss << "\"MaxSize\":" << max << ",";
   ss << "\"Center\":[";
   for (int i = 0; i < 2; i++)