在C++中將string轉換為char數組

2021-03-02 Linux公社

來自:https://www.linuxmi.com/c-string-char.html

相信很多人都遇到過這樣一個錯誤:『cannot convert std::string to char[] or char* data type』。輸入 : string s = "linuxmi" ;
輸出 : char s[] = { 'l', 'i', 'n', 'u', 'x', 'm', 'i' } ;輸入 : string s = "python" ;
輸出 : char s[] = { 'p', 'y', 't', 'h', 'o', 'n' } ;一種方法是將string的內容複製到char數組中。這可以在c_str()和strcpy()函數的幫助下實現。c_str()函數用於返回一個指向數組的指針,該數組包含一個以空結尾的字符序列,該序列表示字符串的當前值。const char* c_str() const ;如果拋出異常,則字符串中沒有任何更改。但是,當需要查找或訪問單個元素時,我們可以使用strcpy()函數將其複製到char數組中。在複製它之後,我們可以像使用一個簡單的數組一樣使用它。

// string轉換到char數組CPP程序
#include <bits/stdc++.h>

using namespace std;

// 驅動代碼
int main()
{
// 為字符串賦值
string s = "www.linuxmi.com";

int n = s.length();

//聲明char數組
char char_array[n + 1];

// 將string 的內容複製到char數組中
strcpy(char_array, s.c_str());

for (int i = 0; i < n; i++)
cout << char_array[i];
cout<<"\n";
return 0;
}

輸出:

www.linuxmi.com

另一種方法

// 轉換 string 到char數組CPP程序
#include <iostream>
#include <string.h>

using namespace std;

//驅動程序代碼
int main()
{
// 為字符串賦值
string s("www.linuxmi.com");
// 聲明字符數組 : p
char p[s.length()];

int i;
for (i = 0; i < sizeof(p); i++) {
p[i] = s[i];
cout << p[i];
}
cout << "\n";
return 0;
}

輸出:

www.linuxmi.com

OK,本文就這樣,有什麼不對的地方請指正。

長按或掃描下面的二維碼關注Linux公社


關注Linux公社,添加「星標」

每天獲取技術乾貨,讓我們一起成長

合作聯繫微信:linuxgs

相關焦點

  • C/C++中字符串與數字轉換
    ,方法一和方法二是c++中的方法,方法三和方法四是C語言庫函數的方法。方法一:c++11中string中添加了下面這些方法幫助完成字符串和數字的相互轉換stod stof stoi stol stold stoll stoul stoull函數原型:float stof (const string& str, size_t* idx = 0);to_string to_wstring
  • [QT]QByteArray與char、int、float(及其數組)、string之間的互相轉化
    1.問題來源要用SQLite資料庫去保存一段定長的char型數組,裡面可能有\0等字符,所以當作字符串varchar處理鐵定丟失數據,所以要用二進位保存
  • C語言中char int轉換問題
    printf("%d", a[0]-0);//輸出結果為32,int轉化為char*********************************** linux c ***********************************(1)字符串轉換成數字,用atoi,atol,atof,分別對應的是整型,long
  • c++ fstream + string處理大數據
    (4)上面兩點算是自己的誤解吧,因為c++裡面也有也有與之對應的fstream類,c++map容器類,詳見c++map簡介(5)c++裡面也有相對比較成熟的string類,裡面的函數也大部分很靈活,沒有的也可以很容易的實現split,strim等,詳見c++string實現(6)最近從網上,看到了一句很經典的話,c++的風fstream類+string
  • c++中的string常用函數用法總結
    標準c++中string類函數介紹注意不是CString之所以拋棄char*的字符串而選用
  • 「C/C++中char* 和 char「」區別
    char b[]=」hello2」; printf(「a=%s, b=%s」, a, b); 其中a是一個指向char變量的指針,b則是一個char數組(字符數組),其次 ,很多時候二者可以混用,像函數傳參數的時候,實參可以是char*,形參可以是 char[],比如:void fun1(char b[]){ printf
  • C++的轉換手段並與explicit關鍵詞配合使用
    同樣的,也不能用const_cast改變表達式的類型:const char *cp;char *q = static_cast<char *>(cp);//錯誤:static_cast不能轉換掉const性質static_cast<string>(cp);/
  • C++ string 類詳解
    string 類定義隱藏了字符串的數組性質,讓我們可以像處理普通變量那樣處理字符串。string 對象和字符數組之間的主要區別是:可以將 string 對象聲明為簡單變量,而不是數組。1.1 string 類幾種常見的構造函數:1)string(const char *s) :將 string 對象初始化為 s 指向的字符串2)string(size_type n,char c) :創建一個包含 n 個元素的 string 對象,其中每個元素都被初始化為字符 c3)string(const
  • C++ string中c_str()、data()、copy(p,n)函數的用法
    類提供了3個成員函數來從一個string得到c類型的字符數組:c_str()、data()、copy(p,n)。1、c_str():生成一個const char*指針,指向以空字符終止的數組。註:①這個數組的數據是臨時的,當有一個改變這些數據的成員函數被調用後,其中的數據就會失效。因此要麼現用先轉換,要麼把它的數據複製到用戶自己可以管理的內存中。注意。
  • 為什麼你學不好C++?是因為string_ref的用法你還沒掌握
    string_ref提供了數個構造函數,可以從字符數組、std::string或者它們的一部分構造出一個幾乎沒有成本的字符串「視圖」:const char*ch="Days of Future Past";//字符數組
  • python+C、C++混合編程的應用
    python與C/C++混合編程的本質是python調用C/C++編譯的動態連結庫,關鍵就是把python中的數據類型轉換成c/c++中的數據類型,給編譯函數處理,然後返回參數再轉換成python中的數據類型。
  • json for modern c++的使用
    json for modern c++是一款非常好用的json庫,具有語法直觀和使用簡單的特點,並且是用C++11標準編寫的,此外還支持STL和json容器之間的轉換,可謂集方便又強大。本文推薦給廣大C++程式設計師,相信學習完本文之後,在處理json時一定會得心應手。
  • 標準 C++ 中的 string 類的用法總結
    const char *data()const;//返回一個非null終止的c字符數組const char *c_str()const;//返回一個以null終止的c字符串int copy(char *s, int n, int pos = 0) const;//把當前串中以pos開始的n個字符拷貝到以s為起始位置的字符數組中,返回實際拷貝的數目
  • c++ fstream + string 處理大數據
    (4)上面兩點算是自己的誤解吧,因為c++裡面也有也有與之對應的fstream類,c++map容器類,詳見c++ map簡介(5)c++裡面也有相對比較成熟的string類,裡面的函數也大部分很靈活,沒有的也可以很容易的實現split,strim等,詳見c++string實現(6)最近從網上,看到了一句很經典的話,c++的風fstream類 + string
  • 【C++】搞懂char與wchar_t字符串
    C++裡的字符串類型是比較二的,因為有太多表示方法:char*、string、字符串數組、wchar_t*、wstring,今天就來縷一縷這些玩意
  • 詳解C++字符編碼的轉換
    這篇文章介紹了如何在最常見的編碼方式(Unicode, UTF-8, ANSI)之間進行轉換,結合代碼實例,清晰明了,方便讀者理解,例子也可以直接拿來使用。本文推薦給經常對文字字符串進行處理的程式設計師閱讀,使其掌握字符轉換的一些基本方法。
  • c++之內存分配、命名空間、強制類型轉換學習總結
    一、C++動態內存分配:在學習c語言的時候,我們一般都是使用庫函數malloc()來進行內存的申請分配,然後使用庫函數free()來進行釋放申請到的內存;現在在c++裡面採用了另外一種內存申請的方法:c++中通過
  • 跟我學C++中級篇——STL中的字符串
    一、字符串在傳統的C/C++語言中,對字符串的處理比較麻煩,基本都是用char*來操作,而指針又往往是一個初學者的噩夢。STL為了解決這個問題,提供了std::string這個數據結構,其實它就是一個類,不過其提供了常見的對字符串的操作符的重載,實現在實際工程中經常遇到的字符串的長度計算,拼接和裁剪以及和C類型字符串的轉換。它不算是STL的容器,它只是一個類。
  • 一文詳解C++字符編碼的轉換
    這篇文章介紹了如何在最常見的編碼方式(Unicode, UTF-8, ANSI)之間進行轉換,結合代碼實例,清晰明了,方便讀者理解,例子也可以直接拿來使用。本文推薦給經常對文字字符串進行處理的程式設計師閱讀,使其掌握字符轉換的一些基本方法。
  • c語言指針與字符數組
    在字符數組或字符串的操作中,首先要理解字符串在內存中的存儲,比如我們有一個"hello"字符串,我們用sizeof計算它的大小,我們可以看到它的大小為6,是6個字節,明明是5個字符,為什麼是6個字節呢?