最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

若是用

char c ;
string s = &c;

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

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

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

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

告知:

當我們用

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

結(jié)果是16

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

結(jié)果會是12

可以思考下原因。

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

另補充冷知識:sizeof(string) = 28;

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

系統(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)存共用

后面的字符串會覆蓋之前的:

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é)

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

相關(guān)文章

  • C++?Qt開發(fā)之關(guān)聯(lián)容器類使用方法詳解

    C++?Qt開發(fā)之關(guān)聯(lián)容器類使用方法詳解

    當我們談論編程中的數(shù)據(jù)結(jié)構(gòu)時,順序容器是不可忽視的一個重要概念,Qt?中提供了豐富的容器類,用于方便地管理和操作數(shù)據(jù),本章我們將主要學習關(guān)聯(lián)容器,主要包括?QMap?,QSet和?QHash,感興趣的朋友跟著小編一起來學習吧
    2023-12-12
  • c語言中if語句是怎么變成匯編代碼的詳解

    c語言中if語句是怎么變成匯編代碼的詳解

    if語句是指編程語言,包括c語言、C#、VB、java、匯編語言等,下面這篇文章主要給大家介紹了關(guān)于c語言中if語句是怎么變成匯編代碼的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • C++編程中的格式化輸出詳解

    C++編程中的格式化輸出詳解

    這篇文章主要介紹了C++編程中的格式化輸出詳解,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C語言中字符的輸入輸出以及計算字符個數(shù)的方法詳解

    C語言中字符的輸入輸出以及計算字符個數(shù)的方法詳解

    這篇文章主要介紹了C語言中字符的輸入輸出以及計算字符個數(shù)的方法,是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-11-11
  • C++函數(shù)重載的定義與原因詳解

    C++函數(shù)重載的定義與原因詳解

    這篇文章主要為大家詳細介紹了Python實現(xiàn)學生成績管理系統(tǒng),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++實現(xiàn)本地TCP通訊的示例代碼

    C++實現(xiàn)本地TCP通訊的示例代碼

    這篇文章主要為大家詳細介紹了C++如何利用TCP技術(shù),實現(xiàn)本地ROS1和ROS2的通訊,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • 用C語言編寫推箱子游戲

    用C語言編寫推箱子游戲

    這篇文章主要為大家詳細介紹了用C語言編寫推箱子游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言楊輝三角兩種實現(xiàn)方法

    C語言楊輝三角兩種實現(xiàn)方法

    大家好,本篇文章主要講的是C語言楊輝三角兩種實現(xiàn)方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 常用的STL查找算法

    常用的STL查找算法

    這篇文章主要介紹了常用的STL查找算法的相關(guān)資料,十分的詳細,需要的朋友可以參考下
    2015-07-07
  • 淺析C++11新特性的Lambda表達式

    淺析C++11新特性的Lambda表達式

    C++11 新增了很多特性,lambda 表達式是其中之一,本文涉及到C++11這次更新中較為重要的lambda表達式。有需要的朋友們可以參考學習。
    2016-08-08

最新評論

商水县| 桑植县| 长阳| 北安市| 潼关县| 金乡县| 安仁县| 兰坪| 延长县| 龙山县| 东海县| 启东市| 威海市| 康保县| 云龙县| 南充市| 万安县| 贵南县| 德安县| 扎囊县| 姚安县| 苏州市| 成安县| 衡阳县| 金川县| 平泉县| 长泰县| 宜丰县| 双峰县| 揭西县| 博罗县| 亚东县| 大厂| 嵊泗县| 都兰县| 塔城市| 峨眉山市| 宜州市| 阳信县| 古田县| 宁城县|