• ベストアンサー

このエラーはどうすればいいのでしょうか?

D-Matsuの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

CString::MakeLowerの型はvoid、つまり「何も返さない」ので引数にはもともとできません。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms928952.aspx

関連するQ&A

  • 「互換でない型変換」というエラーが出てしまいます。

    ex.filのファイルの中身は以下の通りです。 0103 美空ひばり 川の流れのように 0209 山口百恵 いい日旅立ち 0992 キャンディーズ 危ない土曜日 このデータを構造体「iti」に読み込ませるために 以下のようにしました。 ------------------------ typedef struct itiran_ { char code[5]; char singer[20]; char melody[50]; } itiran; itiran iti; int main(void){ char buf[5]; char buf2[100]; ・ ・ ・ fp = fopen("ex.fil","r"); if(fp == NULL){ exit(1); } i = 0; while(fgets(buf2,sizeof buf2,fp) != NULL) iti[i].code = strtok(buf2," "); ↑ここでエラー iti[i].singer = strtok(NULL," "); iti[i].melody = strtok(NULL,"\n");i++; } ------------------------ 「iti[i].code = strtok(buf2," ");」のところで 「互換でない型変換」というエラーが出てしまいます。 iti[i].codeも buf2も どちらもchar型変数なのに どうしてこのようなエラーになるのかが 分かりません。 ご教示して頂けたら幸いです。

  • 関数の型

    C言語の勉強をしております。 以下のように、入力用の関数を作成し、入力された文字列を返して欲しいんですが、「1 番目の引数を 'char *[80]' から 'char *' に変換できません。」という警告メッセージが出てしまい、解決出来ません・・・。 原因と解決策を教えていただけないでしょうか? ちなみに環境はWindowsXP、コンパイラはVC6.0です。 #include <stdio.h> char *insertName(char *buf); int main(void) { char *buf[80]; buf = insertName(buf); printf(buf); return 1; } char *insertName(char *buf) { gets(buf); return buf; } mainの「buf」の定義を「char *buf」にすればエラーは出ないんですが、大きさを指定したいので・・・ どうかよろしくお願いいたします。

  • VC++にてCString型のフルパスをfopenする

    VC++(VisualStudio2005)にてCString型のフルパスをfopenしたいと思っています。 他ページでは char *name = new char[filepass.GetLength()+1]; strcpy( name, filepass ); でstrcpyでCstring→charへ変換できるとあったのですが、 'strcpy' : 2 番目の引数を 'CString' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照) 1> この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。 というエラーをはいて実行できませんでした。 lstrcpy(name, filepass)でも 1 番目の引数を 'char [100]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 となりました。 何か良い方法をご存じないですか? char型に変換できなくとも、結果的にfopenを使ってファイルオープンできれば良いです。

  • エラーの原因は?「この関数の定義が見つかりません」

    <プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <症状> ヘッダー void Transmit(HANDLE,OVERLAPPED,unsigned char[],DWORD,CString); cppファイル void CMyDlg::Transmit(HANDLE hCom,OVERLAPPED old,unsigned char ucBuf[],DWORD dwByte,CString s) { } とコーディングしていて、ビルドも実行も全く問題ないのですが、 ClassViewでTransmit(HANDLE,OVERLAPPED,unsigned char[],DWORD,CString) をダブルクリックして、関数に移ろうとすると 『この関数の定義(インプリメンテーション)が見つかりません』 というエラーが出ます。 <質問> このエラーは何が原因で出ているのでしょうか?? 宜しければご指摘の程お願い致します。

  • CString型からdouble型への変換

    C++は初心者です。VC4.0を使っていますがMFCなどは使っていません。 CString型の変数をint型やlong型への変換はなんとかできたのですが、double型へ変換することができずに困っています。atofを使えばいいのだと思い下記のように記述したのですが、コンパイルするとエラーがでます。   CString sample = "0.234";   double i;   i = atof((const char*)sample); error C2440: 'type cast' : cannot convert from 'class CString' to 'const char *' どう直せば無事にdouble i に0.234を格納できるのでしょうか?よろしくお願いします。

  • ポインターにポインターを加えようとしました。のエラーについて

    よろしくお願いします。環境 WIN98 VC++6.0 MFC にて 下記において、 //m_InputData=m_InputData+buf+crlf;では問題無いのに、m_InputData=buf+crlf;にするとポインターにポインターを加えようとしました。とエラーが出ます。 どうしてなのでしょう? また、対処方法はどうすれば良いのでしょうか? ************************* void CInput::OnButton4() //読出し { int n; char buf[256]; char crlf[]="\x0d\x0a"; FILE *fin; UpdateData(TRUE); m_InputData=""; if((fin=fopen("d:\\qqq.txt","r"))==NULL){ AfxMessageBox("読み込みファイルオープン出来ません"); return; } while((fgets(buf,256,fin))!=NULL){ n=strlen(buf); buf[n-1]='\0'; //AfxMessageBox(m_text); //m_InputData=m_InputData+buf+crlf;//問題無し m_InputData=buf+crlf;//エラー } fclose(fin); UpdateData(FALSE); }

  • c++ CString char* BSTR textbox.text

    c++ 文字列CStringとchar*の変換問題(unicode) _________________________________________________________ Excel   string -> セールの文字列をVC++側に渡すため  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ ______________________________________________________________ VC++   char * -> Excelから引数として渡される文字列  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ __________________________________________________________ VC++   system::string -> FormのTextBox.Textとしてセット  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ ______________________________________________________________ VC++   char * -> FormのDataGridから受け取る文字列  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ ______________________________________________________________ VC++   CString -> VC++からExcelに渡すためBSTR前処理  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ __________________________________________________________ VC++   BSTR -> VC++からExcelに渡すため  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ __________________________________________________________ Excel   string -> Excelのある処理に使う  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 漢字やひらがなも文字化けないように変換できると思いますが、文字化けしたり変換が困難な状況です。 どうぞよろしくお願いします

  • VC++MFCのC2039errorの対処法

    vc++のプログラムでedit controlにおいて,ボタンを押したらエディットボックスに書き込んだ値を読み込むプログラムを書きました. void CSerialcommunicationDlg::OnBnClickedwritebutton() { CString ss; m_writeEdit.GetWindowTextW(ss);//writeedit値を読み込み CString m_writeEdit } そうしたところ,以下のようなエラーが出てきてしまいました. 1>c:\users\documents\visual studio 2008\projects\ex1\ex1\ex1dlg.cpp(190) : error C2039: 'GetWindowTextW' : 'ATL::CStringT<BaseType,StringTraits>' のメンバではありません。 1> with 1> [ 1> BaseType=wchar_t, 1> StringTraits=StrTraitMFC_DLL<wchar_t> 1> ] このエラーへの対処方法となぜこのエラーが発生しているのかを教えていただきたいです. このコードはvc++のテキストに書いてあるとおりにやったのですが,なぜできないのか分かりません.プロジェクトをつくるときの設定か,プロパティに問題があるのでしょうか。

  • VC++2005で、CString型に16進文字列を入れたいのですが・・

    VC++2005で、CString型に16進文字列を入れたいのですが・・・ 次のようなエラーが出ます。 void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : 1 番目の引数を 'const char [5]' から 'const wchar_t *' に変換できません。 プログラムは次の通りです。 CString strBuff; CString strWork; TCHAR tszBuff[80]; UINT unLength; UINT un1; unLength = 5; strBuff = "12345"; _tcscpy(tszBuff, strBuff); strWork = ""; for(un1 = 0; un1 < unLength; un1++) { strWork = strWork + strBuff.Format("%02x", tszBuff[un1]); ←ここにエラーがあると言われています。 } 結果は、strWorkに、"3132333435"となるようにしたい! ネットで探したら、 >UNICODEを使われているのだと思われます。 >T("")マクロを使ってワイドキャラクタに変換するように指示すれば動くと思います。 とあったので、 strWork = strWork + strBuff.Format(_T("%02x"), tszBuff[un1]); としてみたのですが、 二項演算子 '+' : 型 'void' の右オペランドを扱う演算子が見つかりません (または変換できません)。 というエラーが表示されました。 VC++6.0を半年かじり、今日、初めてVC++2005に触った程度の初心者です。 どなたか助言を頂ければ幸いです。 環境  Windows XP Pro SP3  Visual C++ 2005(MFC) 以上、よろしくお願いします。

  • プログラミング(関数reverseを作る)

    プログラミングの勉強会で文字列を反転させる関数(例:ABCDE→EDCBA)を作れという課題が出たのですが、以下のように書いたきり進みません。あと、何を書けばいいのでしょうか?教えてください。 #include <stdio.h> void reverse(char *); void reverse2(char *); void main(){ char buf[10]; printf("str :"); fgets(buf, 10, stdin); reverse(buf); printf("rev :%s", buf); return; } //文字列を反転させる関数 void reverse(char *s){ return; }