C 中的string str問題

時間 2021-08-30 09:08:32

1樓:

都不是。string是個類,string str,是定義乙個名叫str的字串物件。

str內部儲存著字串的內容,通過str.c_str()可以獲取這個字串的首位址。

string str = "abc",這也不是將str賦值為"abc"的首位址,而是使用"abc"為值來初始化乙個string類。

建議先補一下c++物件導向的基礎。

另外,首位址和字串的第乙個字元是兩碼事。你可以認為首位址是字串的第乙個字元的位址。

2樓:匿名使用者

1.c++把字串封裝成乙個類,也就是string,string str是定義了乙個類物件,string類中封裝了很多方法,其中str.c_str()可以獲得其中字串的首位址。

2.字串的首位址是字串中第乙個字元的位址。但這些位址都是相對的位址(作業系統給的)。

3樓:匿名使用者

在字串變數中存放的是字串的指標(即字串的位址)。在vc++6.0環境下,string變數在記憶體中佔4個位元組,指標變數在記憶體中也是佔4個位元組,它們都用於存放變數的首位址。

字串的首位址不是字串的第乙個字元!字串的首位址是字串的第乙個字元的位址,這第乙個字元的位址的內容才是這個字串的第乙個字元。ok?

4樓:匿名使用者

都不是。str.c_str()返回的才是字串的首位址。首位址是第乙個字元。

5樓:匿名使用者

str的值是字串的值

c++中string類的問題。

6樓:昱爺

#include

#include

#include

using namespace std;

void main()

break;

case 0:

break;

case 1:

break;

default:}}}

7樓:匿名使用者

在最頂上加上#include"stdafx.h"

8樓:匿名使用者

加乙個處理回車符的命令試試

c++中string陣列的問題

9樓:

string並不是c++的基本資料型別。它是標準庫里宣告的乙個字串類。

所以樓主的答案是:可以。

string str[10]; //定義乙個字串陣列str顯示的是 i love you

還可以這樣定義字串陣列:

string name[5]=;

可以賦值啊。

#include

#include

using namespace std;

int main()

c++中string類的問題

10樓:馮老師(必果學院

可以先申請再釋放

示例如下:

char* delstr = new char[100];//假設delstr是舊的,通過new分配的100字長字串,存了某些字串

char* newstr = new char[256];//這個新的

strcpy(newstr,delstr);//先將舊的複製到新的deletedelstr;//刪除舊的

//這裡處理新的字串

delstr = newstr;//將新字串的位址複製給舊的(如果後面需要使用delstr這個字串)

關於c++中string型別的問題 20

11樓:gta小雞

c定義成string型別,那麼它就是string型別,任何情況都不可能改變。

cc和c輸出都是"var"而strcmp(cc.c_str(), c.c_str())結果不為0,最大的可能是cc和c兩者之中至少有乙個存在不可見字元,將兩者所有字元以16進製制編碼形式依次列印出來對比一下便知。

C 中的建構函式問題,c 建構函式的問題

建構函式一般用來對類中的資料成員進行初始化工作,但並不是要對全部資料初始化,你只需要選擇自己需要的資料進行賦值即可。其實這一點從預設的建構函式也能看出來 當你沒有顯示的寫乙個建構函式的時候,編譯器會為你提供乙個預設的建構函式,它沒有引數,只有乙個空語句,也就是說它沒有對任何資料成員進行初始化。由於構...

c指標陣列問題,C 中關於指標陣列的問題。

typedef 是 定義一種資料型別 就好像內建的資料型別如 int 它僅是乙個定義,不產生例項物件,即不分配任何記憶體,怎麼能給它賦值呢?對陣列賦初值的方法用for迴圈,在這裡還可用memset nod的記憶體分配在動態棧上,所以值不能確定,要初始化,必須使用顯式的方式。cdma980的回答是對的...

c 中的template的問題

實現模板例項化是編譯器的編譯期行為,編譯期按不同型別引數例項化模板,並且目前而言編譯器一般不會有通用且有效的優化行為 因為模板中的型別引數自由度很高,編譯器無法判斷哪個類或函式的模板例項化版本是不需要的而可以用另一些版本代替 因此如果呼叫的不同型別引數數量比較多,的確會造成很明顯的 膨脹導致最終目標...