Это, вероятно, одно и то же в вашей программе. «Стандартная» строка находится в пространстве имен «std». Если вы «используете std :: string;» или "используя пространство имен std;" внутри модуля они эквивалентны. Если вы не указываете выражение «using», то вам необходимо указать пространство имен объекта. Желательно не предоставлять операторы using в заголовочном файле, и поэтому вы обычно будете видеть разрешение / спецификаторы пространства имен на объектах. (т.е. std :: vector, mynamespace :: myclass и т. д.). Использование «using» более распространено в файлах реализации, где они не влияют на другие файлы, как если бы они были указаны в заголовочном файле.
Возможно использование строкового объекта от другого провайдера. В этом случае поставщик должен / должен иметь свою реализацию строкового объекта в своем собственном пространстве имен, и вам нужно будет объявить, какой строковый объект вы используете.
Итак:
File: stdString.cpp
-------------
#include <string>
#include "providerx/string.h"
using namespace std;
void foo()
{
string x; // Using string object provided by the C++ standard library
std::string y; // Again, using C++ standard lib string
providerx::string // Using string object defined within the providerx namespace
}
File: providerString.cpp
-------------------
#include "providerx/string.h"
using providerX::string;
void foo()
{
string x; // Using providerx string object
}