簡體   English   中英

傳遞字符串作為參數

[英]Passing string as argument

//編輯:跟進問題:

但是將函數設為isUnique(const char *s)然后將函數調用為isUnique(str.c_str())不允許我在函數中修改我的字符串str
//

我遇到傳遞字符串的問題:

bool isUnique(char *s)
{
    int arr[256] = {0};
    while(*s)
    {
        arr[*s]++;
        if(arr[*s]>1)
        {
            cout<<"not unique";
            return false; 
        }
    }
}
int main()
{
    string str = "abcda";
    cout<<"1: True : unique, 2: False: Not Unique"<<endl<<isUnique(str);
}

錯誤:無法將參數'1'的'std :: string {aka std :: basic_string}'轉換為'char *'為'bool isUnique(char *)'

將參數傳遞為:

isUnique(str.c_str());

並將函數的參數類型設為const char*

bool isUnique(const char *s)

因為std::string::c_str()返回const char*

或者甚至更好,使參數const string&

bool isUnique(const std::string & s);

並且像你一樣傳遞: isUnique(str) 在函數內部,您可以使用s[i]訪問字符串中的字符,其中0 <= i < s.size()

采用

isUnique(str.c_str())

並確保isUnique采用char const *參數。

你沒有傳遞一個字符串。 您正在傳遞char *並嘗試從string創建一個。 當然,從stringchar *的轉換不是自動的 - 它們是兩個非常不同的東西。

我建議你寫這個函數:

bool isUnique(const std::string& s)

要么改變功能要接受

bool isUnique(const string& s)

並將該字符串作為const引用傳遞

或者像其他兩個好人一樣建議。

這是C ++,最好傳遞一個const std::string&除非你必須與某些C代碼兼容,或者只需要使用C字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM