演示了字符串在String ,ansi char ,std::string之间的转换

原创 2007年10月10日 17:43:00

这篇文章演示了字符串之间的转换使用如:

1. String转为ansi char

2. String转为std::string

3. ansi char转为String

4. std::string 转为String

#pragma once
#include 
<vcclr.h>
#include 
<atlstr.h>
#include 
<stdio.h>
#
using <mscorlib.dll>                              //Marshal::StringToHGlobalAnsi
using namespace System::Runtime::InteropServices;  //Marshal::StringToHGlobalAnsi
#using <system.windows.forms.dll>
#undef MessageBox  // avoid error C2653 'MessageBoxA': is not a class or namespace name
using namespace std;
#include 
<string>


namespace ttttt
{
    
using namespace System;
    
using namespace System::ComponentModel;
    
using namespace System::Collections;
    
using namespace System::Windows::Forms;
    
using namespace System::Data;
    
using namespace System::Drawing;

    
/// <summary> 
    
/// Summary for Form1
    
///
    
/// WARNING: If you change the name of this class, you will need to change the 
    
///          'Resource File Name' property for the managed resource compiler tool 
    
///          associated with all .resx files this class depends on.  Otherwise,
    
///          the designers will not be able to interact properly with localized
    
///          resources associated with this form.
    
/// </summary>

    public __gc class Form1 : public System::Windows::Forms::Form
    
{    
    
public:
        Form1(
void)
        
{
            InitializeComponent();
        }


        
void String2Ansichar(char* strdst,String* strSrc)
        
{
            
const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(strSrc).ToPointer());
            strcpy(strdst,chars);
            Marshal::FreeHGlobal(System::IntPtr((
void*)chars));
        }


        
void String2string(std::string& strdst,String*strSrc)
        
{
            
const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(strSrc).ToPointer());
            strdst 
= chars;
            Marshal::FreeHGlobal(System::IntPtr((
void*)chars));

        }

  
    
protected:
        
void Dispose(Boolean disposing)
        
{
            
if (disposing && components)
            
{
                components
->Dispose();
            }

            __super::Dispose(disposing);
        }


    
private:
        
/// <summary>
        
/// Required designer variable.
        
/// </summary>

        System::ComponentModel::Container * components;

        
/// <summary>
        
/// Required method for Designer support - do not modify
        
/// the contents of this method with the code editor.
        
/// </summary>

        void InitializeComponent(void)
        
{
            
// 
            
// Form1
            
// 
            this->AutoScaleBaseSize = System::Drawing::Size(614);
            
this->ClientSize = System::Drawing::Size(292266);
            
this->Name = S"Form1";
            
this->Text = S"Form1";
            
this->Load += new System::EventHandler(this, Form1_Load);

        }
    
    
private: System::Void Form1_Load(System::Object *  sender, System::EventArgs *  e)
             
{
                
//把ansi char 转为 String 
                 char test1[50= {"abcdefg"};
                 String
* pStr = test1;
                 MessageBox::Show(pStr, 
"测试字符转换",MessageBoxButtons::OK, MessageBoxIcon::Information);


                 String
* pStr2 = new String("123456789");
                 
//把String 转为 ansi char
                 char    test2[50= {""};
                 String2Ansichar(test2,pStr2);
                 MessageBox::Show(test2, 
"测试字符转换",MessageBoxButtons::OK, MessageBoxIcon::Information);

                 
//把String转为std::string
                 std::string test3 = "";
                 String2string(test3,pStr2);
                 MessageBox::Show(test3.c_str(), 
"测试字符转换",MessageBoxButtons::OK, MessageBoxIcon::Information);

                 
//如何获取String的第一个字符串
                 int first = pStr->Chars[0];
                 sprintf(test2,
"%d",first);
                 MessageBox::Show(test2, 
"测试字符转换",MessageBoxButtons::OK, MessageBoxIcon::Information);

             }


    }
;
}



std::string 与 char* 之间的转换

std::string 是c++标准库里面其中一个,封装了对字符串的操作 1:把string转换为char* 有3中方法: 1:data 如: string str = "Hello"; cha...
  • u010023457
  • u010023457
  • 2014年12月10日 22:53
  • 10691

std::string 转换为 const* char

std::string 转换为 const* char,方式如下: std::string str; const char * c = str.c_str(); 如果需要转换为一...
  • some_do
  • some_do
  • 2013年04月18日 11:12
  • 3075

char * 转换为std::string是内存拷贝了吗?

答案:是。 验证程序 [root@gdc1000 z]# g++ -o test test.cpp [root@gdc1000 z]# ./test One One One [root@gdc10...
  • anzhuangguai
  • anzhuangguai
  • 2015年07月04日 09:22
  • 854

char*与System::String^的相互转换

char*与System::String^的相互转换 #include "stdafx.h"  using namespace System; //这个命名空间如果缺的话,IntPtr这个...
  • sumnuce
  • sumnuce
  • 2015年01月08日 15:00
  • 1298

std::string , Qstring和 const char * 的互相转换

好多人都喜欢重新造一个轮子, 所以这个世界上的的轮子千奇百怪. 作为在这些轮子下面苟延残喘的洒家,往往不得不无尽的寻找两个轮子之间转换的方法. STL库, 作为标准库, 在写C++的时候理所当然的, ...
  • ythunder
  • ythunder
  • 2016年12月22日 13:02
  • 1007

实战c++中的string系列--std:vector<char> 和std:string相互转换(vector to stringstream)

有时候也会遇到std:vector与转std:string 相互转换的情况。首先看一下vector如何转string:std::vector *data = response->getResponse...
  • wangshubo1989
  • wangshubo1989
  • 2015年12月12日 13:30
  • 14640

std::string大小写转换及字符数字转换

#include   #include   #include   #include   int main() { std::string t_str = "AbCdEf" ; tra...
  • fm0517
  • fm0517
  • 2015年11月28日 14:54
  • 2144

标准C++库字符串类std::string的用法

#include std::string s1; std::string s3(s2); std::string s2("this is a string"); begin       得到指...
  • doupei2006
  • doupei2006
  • 2012年02月13日 08:54
  • 4607

将char* 赋值给std::string的一些陷阱

这段时间,总是要使用char或者char* 赋值给std::string,踩了不少坑。于是写了个测试代码: #include #include using namespace std; in...
  • analogous_love
  • analogous_love
  • 2017年05月12日 16:30
  • 2325

托管c++ (CLI) String^ 到 std::string 的相互转化

#include "stdafx.h" #include #include #include using namespace msclr::interop; using namespace S...
  • spiritring
  • spiritring
  • 2014年05月04日 14:26
  • 8690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:演示了字符串在String ,ansi char ,std::string之间的转换
举报原因:
原因补充:

(最多只允许输入30个字)