[英]“conversion to const char*” error when passing string to function
我試圖將字符串值傳遞給函數,但是DevC ++ 5.6.1報告錯誤(從char到const char *的無效轉換)。 這是程序:
#include<iostream>
#include<string>
using namespace std;
string mysubstr(string target, int start_pos, string end_char) {
for(int i = 0; i < target.size(); ++i)
if(target[i] == ".")
return target.substr(0, i);
return target;
}
int main() {
string temp;
cin >> temp;
string day0 = mysubstr(temp, 0, '.');
return 0;
}
我不知道為什么會這樣以及如何解決。 謝謝。 順便說一句:如果將功能頭(第5行)更改為
string mysubstr(const string &target, int start_pos, string end_char) {
編輯:該功能應為以下。 對原始的兩個修改:(1)調用方應使用雙引號; (2)相比之下,我應該使用target.substr(i,0)。 (3)現在使用兩個參數start_pos和end_char。
string mysubstr(string target, int start_pos, string end_char) {
for(int i = 0; i < target.size(); ++i)
if(target.substr(i, 1) == end_char)
return target.substr(0, i);
return target;
}
您正在比較一個字符和一個字符串( target[i] == "."
),並將一個字符傳遞給一個字符串參數( end_char
為'.'
)。 請注意,您實際上並沒有在函數中使用 end_char
,也沒有為此使用 start_pos
。
您正在傳遞字符'.'
到const char*
類型的參數。 類型不匹配,這是您的問題。 您可能要使用字符串文字:
string day0 = mysubstr(temp, 0, ".");
// ^ ^
函數的最后一個參數是string
,但是當您調用它時,您將傳遞給它一個char
。 您可以通過將參數放在雙引號而不是單引號中來解決問題,因為char
數組被隱式轉換為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.