Как преобразовать string в string c
Перейти к содержимому

Как преобразовать string в string c

  • автор:

Как преобразовать string в char?

У меня есть строка, которая состоит из одного символа и мне нужно преобразовать эту строку в тип char. Получится ли это напрямую или придется сначала преобразовать в массив(ToCharArray()), а потом достать оттуда символ?

  • Вопрос задан более трёх лет назад
  • 3223 просмотра

Комментировать

Решения вопроса 1

DanielMcRon

DanielMcRon @DanielMcRon

Практическое руководство. Преобразование строки System::String в стандартную строку

Вы можете преобразовать объект в String std::string или std::wstring без использования PtrToStringChars в Vcclr.h.

Пример

// convert_system_string.cpp // compile with: /clr #include #include using namespace std; using namespace System; void MarshalString ( String ^ s, string& os ) < using namespace Runtime::InteropServices; const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer(); os = chars; Marshal::FreeHGlobal(IntPtr((void*)chars)); >void MarshalString ( String ^ s, wstring& os ) < using namespace Runtime::InteropServices; const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni(s)).ToPointer(); os = chars; Marshal::FreeHGlobal(IntPtr((void*)chars)); >int main()
test abcd efgh 

How to convert an std::string to C-style string [duplicate]

I am programming in C++. As basic as this question is I cannot seem to find an answer for it anywhere. So here is the problem: I want to create a C-style string however I want to put an integer variable i into the string. So naturally, I used a stream:

stringstream foo; foo  

However, I need to somehow get a C-style string to pass to a function (turns out foo.str() returns an std::string). So this is technically a three part question -- 1) How do I convert std::string to a C-style string? 2) Is there a way to get a C-style string from a stringstream? 3) Is there a way to use a C-style string directly (without using stringstreams) to construct a string with an integer variable in it?

Преобразование string в String^

Анна, указывайте, пожалуйста, метку c++-cli , с правильной меткой больше шансов получить ответ. Дело в том, что C++ CLI это не C++ несмотря на некоторое сходство, а отсутствующая метка создает впечатление, что речь именно о C++.

8 янв 2019 в 16:41
string - может иметь "разночтения", имеется ввиду std:string? Посмотреть конструкторы System::String
8 янв 2019 в 16:49

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Прямого преобразования - нету.

Наиболее подходят два - System::String^::String(char*) и System::String^::String(wchar_t*) . Класс std::string имеет наиболее подходящий метод c_str() .

std::string data; System::String^ s = gcnew System::String(data.c_str()); 

Ansi - строки могут терять "кодировку", лучше использовать юникод.

Отслеживать
ответ дан 8 янв 2019 в 17:07
8,047 1 1 золотой знак 22 22 серебряных знака 67 67 бронзовых знаков

Спасибо за ответ! К сожалению мне не удалось им воспользоваться. string namea = AddName(); String^ nameb = gcnew String(namea->c_str()); Этот вариант заканчивается ошибкой: error C2819: type 'std::basic_string<_Elem,_Traits,_Ax>' does not have an overloaded member 'operator ->' Остальные так же не удачны. Не знаете как решить проблему?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *