0
我有關於C++字符串的兩個問題:C++傳遞字符串引用到功能
- 表達
string func(string & s)
作品以類似的方式來string & func(string & s)
,但你如何確定返回值是參考或非參考? - 爲什麼我不能用
func((string)str)
呢?
的代碼如下,包括評論顯示我的與問題1和問題2意圖:
#include <iostream>
#include <string>
using namespace std;
//Q1:string func(string & s){
string & func(string & s){
s[2]='S';
return s;
}
int main(){
char str[]={'H','H','H','H'};
string name="HHHHH";
//Q2:string tmp=(string)str;
//string rest=func(tmp);
string rest=func((string)str);
cout<<"rest"<<rest;
}
至於Q1:如果你知道C++引用它應該是顯而易見的。至於Q2:你不能從一個字符數組構造一個std :: string,除非這個字符數組是以null結尾的。 – heinrichj
'char str [] = {'H','H','H','H'}'是一個由四個字符組成的數組,而不是C字符串。 C-字符串端接一個NUL字節,相當於'炭STR [] = { 'H', 'H', 'H',H」,0/*或 '\ 0' * /};'或'炭STR [1] =「HHHH」;' – kfsone