[英]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
創建一個。 當然,從string
到char *
的轉換不是自動的 - 它們是兩個非常不同的東西。
我建議你寫這個函數:
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.