2016-10-28 7 views
-1

ファイルを書き込む関数を作成しようとしていますが、パラメータとして文字列を渡す際に問題があります。エラー: 'std :: string * {aka std :: basic_string <char> *}'から 'std :: string {aka std :: basic_string <char>}'に変換できませんでした。

void writeFile(string filename, string letters, int size) 
{ 
    ofstream outputfile("output.txt"); 
    outputfile << letters; 
    outputfile.close(); 

} 

int main() 
{ 
    string letters[] = {"u", "l", "s", "n","m", "z", "a", "p", "b"}; 

    int size = 9; 

    string filename = "Inputfile.txt"; 

    writeFile(inputfilename.c_str(),letters,size); 

} 

このエラーがあります。

error: could not convert from 'std::string* {aka std::basic_string<char>*}' to 'std::string {aka std::basic_string<char>}'| 
+0

'unsortedValues'とは何ですか? – songyuanyao

+0

変数 'unsortedValues'はどこにありますか?エラーは 'string'ではなく' string * 'であることを示します。 – Barmar

+0

これは 'unsortedValues'ではなく' letters'でしょうか? – Barmar

答えて

2

stringアイテムの配列は、仮引数が単一stringである実引数として渡されます。

アレイを1つの文字列に置き換えることができます。

または、何か目的に合っていても、それに応じて呼び出される関数を変更する必要があります。配列式は配列を基準に結合されていないので、それがない最初の項目へのポインタを表す式にを減衰するため


エラーは、std::string[9]ように、代わりにアレイのstd::string*を言及します式の配列の性質を保持しなければならないものはsizeofまたは何かに渡されます。

0

問題が

void writeFile(string filename, string letters, int size) 

は、文字列を期待されているが、

string letters[] = {"u", "l", "s", "n","m", "z", "a", "p", "b"}; 

は、文字列の配列であることを、私は

void writeFile(string outputFileName, string words[], int arraylength) 
に機能二番目のパラメータを変更することにより、それを「固定」しました。

"固定"とは、現在のところ、出力ファイル名は "output.txt"ですが、 ntentは、2番目のパラメータとして渡される文字列の配列ではありません。

関連する問題