簡體   English   中英

將字符串傳遞給函數時出現“轉換為const char *”錯誤

[英]“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.

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