欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++之解決char轉(zhuǎn)string時(shí)出現(xiàn)的亂碼問(wèn)題

 更新時(shí)間:2023年08月01日 10:26:44   作者:u010905359  
這篇文章主要介紹了c++之解決char轉(zhuǎn)string時(shí)出現(xiàn)的亂碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

c++ char轉(zhuǎn)string時(shí)出現(xiàn)的亂碼問(wèn)題

刷題遇到的問(wèn)題。大致是這樣,需要將一個(gè)字符串提取中間一部分,然后轉(zhuǎn)為整形,通過(guò)整形轉(zhuǎn)化為字符型,最后返回一個(gè)字符串。

若是用

char c ;
string s = &c;

則會(huì)出現(xiàn)亂碼,內(nèi)容為字符串s加上亂碼。

最后發(fā)現(xiàn)原因是:char沒(méi)有’\0’作為字符串的邊界,當(dāng)輸出string時(shí),string可以看成是數(shù)組,因?yàn)閟tring接受一個(gè)地址,那必然是首地址,但string長(zhǎng)度并非是1,所以后面的空間并未初始化,則會(huì)出現(xiàn)亂碼。

string本身就是一個(gè)數(shù)據(jù)結(jié)構(gòu)。

可以通過(guò)at來(lái)獲取內(nèi)容,即s.at[0].

告知:

當(dāng)我們用

char c ;
string s = &c;
cout<<s.length();`

結(jié)果是16

char c ;
string s;
s = &c;
cout<<s.length();

結(jié)果會(huì)是12

可以思考下原因。

另一種做法是嘗試用char*或char[]來(lái)保存變量,此時(shí)用string接收不會(huì)出現(xiàn)亂碼。

另補(bǔ)充冷知識(shí):sizeof(string) = 28;

c++ string 轉(zhuǎn) char * 出現(xiàn)亂碼 內(nèi)存共用問(wèn)題

系統(tǒng):unbuntu16.04 IDE:vscode

出現(xiàn)亂碼

std::string str = "Hello Word";
char* p1 = str.c_str();  //出現(xiàn)亂碼
char* p2 = str.data();  //出現(xiàn)亂碼

出現(xiàn)內(nèi)存共用

后面的字符串會(huì)覆蓋之前的:

char * s1 =  (char *)data.getWorkNum().c_str();  //string是 s1:1
std::cout<<s1<<std::endl;
char * s2 =  (char *)data.getName().c_str();   //string是 s2:11
std::cout<<s2<<std::endl;
char * s3 = (char *)data.getDepartment().c_str();  //string是 s3:111
std::cout<<s3<<std::endl;
char * s4 = (char *)data.getRoom().c_str();       //string是 s4:1111
std::cout<<s4<<std::endl;
std::cout<<s1<<std::endl;
std::cout<<s2<<std::endl;
std::cout<<s3<<std::endl;
std::cout<<s4<<std::endl;

打?。?/p>

s1:1
s2:11
s3:111
s4:1111
s4:1111   //出現(xiàn)后者覆蓋前面所有
s4:1111   //出現(xiàn)后者覆蓋前面所有
s4:1111   //出現(xiàn)后者覆蓋前面所有
s4:1111   //出現(xiàn)后者覆蓋前面所有

解決方法

(1):

char * strc = new char[strlen(str.c_str())+1];
strcpy(strc, str.c_str());

(2):

    char c_workNum[data.getWorkNum().length()];  //其中data.getWorkNum()為字符串
    strcpy(c_workNum,data.getWorkNum().c_str()); 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++中template方法undefined reference to的問(wèn)題解決

    C++中template方法undefined reference to的問(wèn)題解決

    Undefined reference to 錯(cuò)誤:這類(lèi)錯(cuò)誤是在連接過(guò)程中出現(xiàn)的,本文就來(lái)介紹一下C++中template方法undefined reference to的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • C++11中的stoi & stod用法

    C++11中的stoi & stod用法

    這篇文章主要介紹了C++11中的stoi & stod用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 深入理解C/C++混合編程

    深入理解C/C++混合編程

    本篇文章是對(duì)C/C++混合編程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++變量,常量,數(shù)組和字符串詳解

    C++變量,常量,數(shù)組和字符串詳解

    這篇文章主要介紹了C++變量,常量,數(shù)組和字符串,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • C++子類(lèi)父類(lèi)成員函數(shù)的覆蓋和隱藏實(shí)例詳解

    C++子類(lèi)父類(lèi)成員函數(shù)的覆蓋和隱藏實(shí)例詳解

    這篇文章主要介紹了C++子類(lèi)父類(lèi)成員函數(shù)的覆蓋和隱藏實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++?使用getline()從文件中讀取一行字符串方法示例

    C++?使用getline()從文件中讀取一行字符串方法示例

    這篇文章主要介紹了C++?使用getline()從文件中讀取一行字符串方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • C++14中binary literals的使用詳解

    C++14中binary literals的使用詳解

    這篇文章主要介紹了C++14中binary literals的使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 詳解C語(yǔ)言之文件操作下)

    詳解C語(yǔ)言之文件操作下)

    這篇文章主要介紹了關(guān)于C語(yǔ)言文件操作方法的相關(guān)資料,小編覺(jué)得這篇文章寫(xiě)的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • 關(guān)于C++中構(gòu)造函數(shù)初始化成員列表的總結(jié)

    關(guān)于C++中構(gòu)造函數(shù)初始化成員列表的總結(jié)

    下面小編就為大家?guī)?lái)一篇關(guān)于C++中構(gòu)造函數(shù)初始化成員列表的總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • 淺析C語(yǔ)言中的數(shù)組及字符數(shù)組

    淺析C語(yǔ)言中的數(shù)組及字符數(shù)組

    這篇文章主要介紹了C語(yǔ)言中的數(shù)組及字符數(shù)組,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11

最新評(píng)論