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

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

  • автор:

Convert char* to string in C++

There are three ways to convert char* into string in C++.

1. Using the “=” operator

Using the assignment operator, each character of the char pointer array will get assigned to its corresponding index position in the string.

C++

// C++ Program to demonstrate the conversion
// of char* to string using ‘=’
using namespace std;
// declaration of char*
const char * ch = «Welcome to GeeksForGeeks» ;
string s = ch;
Output

Welcome to GeeksForGeeks

2. Using string constructor

The string constructor accepts char* as an argument and implicitly changes it to string.

C++

// C++ Program to demonstrate the conversion
// of char* to string using string constructor
using namespace std;
const char * ch = «Welcome to GeeksForGeeks» ;
string s(ch);
Output

Welcome to GeeksForGeeks

3. Using the assign function

It accepts two arguments, starting pointer and ending pointer, and converts the char pointer array into a string.

C++

// C++ Program to demonstrate the conversion
// of char* to string using assign function
using namespace std;
const char * ch = «Welcome to GeeksForGeeks» ;
string str;
// 24 is the size of ch
str.assign(ch, ch + 24);
Output

Welcome to GeeksForGeeks

Time complexity: O(N), as time complexity of assign() is O(N) where N is the size of the new string
Auxiliary space: O(1).

Like Article
Suggest improvement
Share your thoughts in the comments
Add Your Comment

Please Login to comment.

Similar Reads

Difference between const char *p, char * const p and const char * const p
char* vs std:string vs char[] in C++
Convert String to Char Array in C++
How to Convert a std::string to char* in C++?
Difference Between string and char[] Types in C++
Why is Conversion From String Constant to ‘char*’ Valid in C but Invalid in C++?
C++ Program to Find the Size of int, float, double and char
Maximum value of signed char in C++
Maximum value of unsigned char in C++
C++ Program For int to char Conversion
Article Tags :
Practice Tags :

advertisewithusBannerImg

Explore More

A-143, 9th Floor, Sovereign Corporate Tower, Sector-136, Noida, Uttar Pradesh — 201305

GFG App on Play Store GFG App on App Store

  • Company
  • About Us
  • Legal
  • Careers
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Explore
  • Hack-A-Thons
  • GfG Weekly Contest
  • DSA in JAVA/C++
  • Master System Design
  • Master CP
  • GeeksforGeeks Videos
  • Geeks Community
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning Tutorial
  • ML Maths
  • Data Visualisation Tutorial
  • Pandas Tutorial
  • NumPy Tutorial
  • NLP Tutorial
  • Deep Learning Tutorial
  • HTML & CSS
  • HTML
  • CSS
  • Web Templates
  • CSS Frameworks
  • Bootstrap
  • Tailwind CSS
  • SASS
  • LESS
  • Web Design
  • Django Tutorial
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • DevOps
  • Git
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • Competitive Programming
  • Top DS or Algo for CP
  • Top 50 Tree
  • Top 50 Graph
  • Top 50 Array
  • Top 50 String
  • Top 50 DP
  • Top 15 Websites for CP
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • JavaScript
  • JavaScript Examples
  • TypeScript
  • ReactJS
  • NextJS
  • AngularJS
  • NodeJS
  • Lodash
  • Web Browser
  • Preparation Corner
  • Company-Wise Recruitment Process
  • Resume Templates
  • Aptitude Preparation
  • Puzzles
  • Company-Wise Preparation
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • World GK
  • Management & Finance
  • Management
  • HR Management
  • Finance
  • Income Tax
  • Organisational Behaviour
  • Marketing
  • Free Online Tools
  • Typing Test
  • Image Editor
  • Code Formatters
  • Code Converters
  • Currency Converter
  • Random Number Generator
  • Random Password Generator
  • More Tutorials
  • Software Development
  • Software Testing
  • Product Management
  • SAP
  • SEO — Search Engine Optimization
  • Linux
  • Excel
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Data Science
  • CS Subjects

We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy Got It !

Improvement
Please go through our recently updated Improvement Guidelines before submitting any improvements.

This article is being improved by another user right now. You can suggest the changes for now and it will be under the article’s discussion tab.

You will be notified via email once the article is available for improvement. Thank you for your valuable feedback!

Suggest changes
Please go through our recently updated Improvement Guidelines before submitting any improvements.
Suggest Changes

Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.

geeksforgeeks-suggest-icon

Create Improvement

Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.

Преобразование char[] в string

Наиболее просто, это ознакомиться со списком конструкторов std::string. Или Вы не читаете документацию на то, чем пользуетесь?

30 мая 2016 в 8:19

3 ответа 3

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

Вот краткая выдержка:

Один из способов организовать работу со строками — это использование одномерных массивов типа char . Тогда строка символов – это одномерный массив типа char , заканчивающийся нулевым байтом.

Нулевой байт – это байт, каждый бит которого равен нулю, при этом для нулевого байта определена символьная константа \0 (признак окончания строки, или нуль-терминатор). По нулевому байту функции, работающие со строками, определяют место окончания строки. Если они читают строку, то воспринимают ее только до первого нуль-терминатора; если они создают строку, то записывают нуль-терминатор в ее конец.

char arr[ ] = "Простая проверка"; string str = string(arr); cout  

Преобразование из System::String в Char в Visual C++

В этой статье описывается несколько способов преобразования из System::String* в char* с помощью управляемых расширений в Visual C++.

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 311259

Сводка

В этой статье рассматриваются следующие пространства имен библиотеки классов Microsoft платформа .NET Framework:

  • System::Runtime::InteropServices
  • Msclr::interop

В этой статье рассматриваются несколько способов преобразования из System::String* в char* с помощью следующего:

  • Управляемые расширения для C++ в Visual C++ .NET 2002 и Visual C++ .NET 2003
  • C++/CLI в Visual C++ 2005 и Visual C++ 2008

Способ 1

PtrToStringChars предоставляет внутренний указатель на фактический String объект. При передаче этого указателя в вызов неуправляемой функции необходимо сначала закрепить указатель, чтобы убедиться, что объект не перемещается во время асинхронного процесса сборки мусора:

//#include System::String * str = S"Hello world\n"; const __wchar_t __pin * str1 = PtrToStringChars(str); wprintf(str1); 

Способ 2

StringToHGlobalAnsi копирует содержимое управляемого String объекта в собственную кучу, а затем преобразует его в формат ANSI на лету. Этот метод выделяет необходимую собственную память кучи:

//using namespace System::Runtime::InteropServices; System::String * str = S"Hello world\n"; char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str); printf(str2); Marshal::FreeHGlobal(str2); 

В Visual C++ 2005 и Visual C++ 2008 необходимо добавить параметр компилятора поддержки среды CLR (/clr:oldSyntax), чтобы успешно скомпилировать предыдущий пример кода. Чтобы добавить параметр компилятора поддержки среды CLR, выполните следующие действия.

  1. Щелкните Проект, а затем — Свойства ProjectName.

Примечание. ProjectName — это заполнитель для имени проекта.

Дополнительные сведения о параметрах компилятора в среде CLR см. на следующем веб-сайте Microsoft Developer Network (MSDN):

Эти действия применимы ко всей статье.

Способ 3

Класс VC7 CString имеет конструктор, который принимает управляемый указатель String и загружает CString с содержимым:

//#include System::String * str = S"Hello world\n"; CString str3(str); printf(str3); 

Способ 4

Visual C++ 2008 представляет класс справки marshal_as маршал и вспомогательный marshal_context() класс маршал.

//#include //using namespace msclr::interop; marshal_context ^ context = gcnew marshal_context(); const char* str4 = context->marshal_as(str); puts(str4); delete context; 

Этот код не компилируется с помощью управляемых расширений для C++ в Visual C++ .NET 2002 или Visual C++ .NET 2003. В нем используется новый синтаксис C++/CLI, представленный в Visual C++ 2005, и новый код пространства имен msclr, представленный в Visaul C++ 2008. Для успешной компиляции этого кода необходимо использовать параметр компилятора /clr C++ в Visual C++ 2008.

Пример кода управляемых расширений для C++ (Visual C++ 2002 или Visual C++ 2003)

//compiler option: cl /clr #include #include #include #using using namespace System; using namespace System::Runtime::InteropServices; int _tmain(void) < System::String * str = S"Hello world\n"; //method 1 const __wchar_t __pin * str1 = PtrToStringChars(str); wprintf(str1); //method 2 char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str); printf(str2); Marshal::FreeHGlobal(str2); //method 3 CString str3(str); wprintf(str3); return 0; >

Пример кода C++/CLI (Visual C++ 2005 и Visual C++ 2008)

//compiler option: cl /clr #include #include #using using namespace System; using namespace System::Runtime::InteropServices; #if _MSC_VER > 1499 // Visual C++ 2008 only #include using namespace msclr::interop; #endif int _tmain(void) < System::String ^ str = "Hello world\n"; //method 1 pin_ptrstr1 = PtrToStringChars(str); wprintf(str1); //method 2 char* str2 = (char*)Marshal::StringToHGlobalAnsi(str).ToPointer(); printf(str2); Marshal::FreeHGlobal((IntPtr)str2); //method 3 CString str3(str); wprintf(str3); //method 4 #if _MSC_VER > 1499 // Visual C++ 2008 only marshal_context ^ context = gcnew marshal_context(); const char* str4 = context->marshal_as(str); puts(str4); delete context; #endif return 0; > 

Обратная связь

Были ли сведения на этой странице полезными?

Преобразование char в const char*?

Имеется строка
string message = "Hello!";
Функция принимает const char*, мне нужно передать в неё первый символ этой строки.
Вариант с message[0] возвращает char, пытаюсь сделать так:
(const char*)message[0];

Но программа крашится, как это исправить без написания лишних строк кода, прямо параметром, м?

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

8 комментариев

Простой 8 комментариев

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

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