- 締切済み
const
次の2つの宣言は同じ意味になりますか? const static char str[] = "a"; static const char str[] = "a";
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hpsk
- ベストアンサー率40% (48/119)
関連するQ&A
- constの位置
申し訳ありませんが、続けて質問させていただきます。 char const と const char は同じ意味でしょうか。 次のプログラムは配列をconst charと宣言しています。 ary[1]='N'; の行で、意図した通りにコンパイルエラーになります。 これはchar constと宣言しても、同じ意味なんでしょうか。 #include <stdio.h> int main(void) { const char ary[ ] = { 'A', 'B', 'C', '\0' }; ary[1] = 'N'; printf("aryは%s\n", ary ); return 0; } また、 const int a=1; int const a=1; この2つは同じ意味でしょうか。
- ベストアンサー
- C・C++・C#
- const unsigned char *Ptn
度々お世話になってます。VC++2010、MFC、ユニコードを使う設定で、ワイルドカードを用いたLike処理が使いたいです。 正規表現までは、望んでいません。 それで、過去ログを見てみましたが、まだ分かりませんでした。 ◆ワイルドカードを用いた文字列検索 http://okwave.jp/qa/q287644.html を使いたいです。 一応、リンク先のソースコードを載せておきます。 _________________________________________________________________________________________________ int StrMatchMBS( const unsigned char *Ptn, const unsigned char *Str ) { switch( *Ptn ) { case '\0': return (_mbsnextc(Str)=='\0'); case '*': return StrMatchMBS( _mbsinc(Ptn), Str ) || (_mbsnextc(Str)!='\0') && StrMatchMBS( Ptn, _mbsinc(Str) ); case '?': return (_mbsnextc(Str)!='\0') && StrMatchMBS( _mbsinc(Ptn), _mbsinc(Str) ); default: return (_mbsnextc(Ptn)==_mbsnextc(Str)) && StrMatchMBS( _mbsinc(Ptn), _mbsinc(Str) ); } } _________________________________________________________________________________________________ int KeywordDlg::StrMatchMBS( const unsigned TCHAR *Ptn, const unsigned TCHAR *Str ){ としたところ、 エラー 4 error C2050: switch 式の結果は、整数値になりませんでした。 エラー 3 error C2065: 'Ptn' : 定義されていない識別子です。 ・・・のエラーがでます。 _________________________________________________________________________________________________ int KeywordDlg::StrMatchMBS( const TCHAR *Ptn, const TCHAR *Str ){ としたところ Ptn と Str の所で、赤い波線となり、 エラー 2 error C2664: '_mbsinc' : 1 番目の引数を 'const TCHAR *' から 'const unsigned char *' に変換できません。(新しい機能 ; ヘルプを参照) _________________________________________________________________________________________________ ↓この方の質問のままなのですが、具体的に どう書けばいいのか?分かりません。 ◆UNICODE化のための書き換え http://okwave.jp/qa/q6966243.html _tcsrchr もどこで使えばいいのか分かりません。 ポインターの記述を完全に理解していないせいで、分からないのでしょうか? すみませんが、もう少し、補足して頂くとうれしいですm(_ _)m
- ベストアンサー
- C・C++・C#
- 文字列のメンバ変数を外部変数のように扱いたい
済みません。質問なのですが、 メンバ変数を外部変数のように扱うにはどうしたらよいのでしょうか? int型などの場合、 class test{ static const int a; }; const int test::a = 10; とすればよいですよね? これをcharの配列にして class test{ static char a[7][32]; }; char test::a[0] = "test"; とすると サイズが0の配列を割り当てまたは宣言しようとしました というコンパイルエラーがでてしまいます…。 多次元配列の場合はstatic変数としてもてないのでしょうか? char** として宣言してもどこでnewを行えばよいか解りません。 コンストラクタの中で行えば そこでstaticではなくなってしまいますし…。 後、できればstringクラスの配列で持ちたいのですが #include <string> class test{ static string test[7]; }; string test::test[0] = "aaa"; なんてことができますでしょうか? 質問内容が解りにくいかも知れませんが どうか教えてください。 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
- const 回りのエラー?
以下のプログラムをcygiwn 上でコンパイルすると エラーが出るのですが 何がいけないのかよくわかりません。 メッセージを読んでconst 回りなのかな?とは思っているのですが… よろしくお願いします。 #include<iostream> #include<cstring> #include<cstdlib> using namespace std; class sample{ char *s; public: sample(); sample(const sample &ob); ~sample(){if(s) delete [] s; cout << "Freeing s\n";} void show(){cout << s << "\n";} void set(char *str); sample operator=(sample &ob); }; sample::sample() { s = new char('\0'); if(!s){ cout << "Allocation error\n"; exit(1); } } sample::sample(const sample &ob) { s = new char[strlen(ob.s)+1]; if(!s){ cout << "Allocation error\n"; exit(1); } strcpy(s,ob.s); } void sample::set(char *str) { s = new char[strlen(str)+1]; if(!s){ cout << "Allocation error\n"; exit(1); } strcpy(s,str); } sample sample::operator=(sample &ob) { if(strlen(ob.s)>strlen(s)){ delete [] s; s = new char[strlen(ob.s)+1]; if(!s){ cout << "Allocation error\n"; exit(1); } } strcpy(s,ob.s); return *this; } sample input() { char instr[80]; sample str; cout << "Enter a string: "; cin >> instr; str.set(instr); return str; } int main() { sample ob; ob = input(); ob.show(); return 0; } <コンパイル結果> In function 'int main()': 78:error:no match for 'operator=' in 'ob = input()()' 49:note:candidates are: sample sample::operator=(sample&)
- 締切済み
- C・C++・C#
- CやC++に今後追加して欲しい機能ってありますか?
個人的にC言語はC++があるので今のままでいいと思いますが、 C++には class Test_c { static const int VarI = 10; //これは従来もOK static const float VarF = 10.5; //これは整数以外なのでアウト static const char * Str1 = "テスト文字列" //これもアウト public: } 見たいにフィールドで整数以外のstatic constもできるようにして欲しいです。
- 締切済み
- アンケート
- 前回質問させて頂き、改善できるところはしました。
前回質問させて頂き、改善できるところはしました。 再度駄目な所をご指摘お願いします。 仕様は出来るだけ標準関数に近いものを自作したいと思っています。 //---------------------------- MyStrstr ----------------------------------// char *MyStrstr(const char *str1, const char *str2) { const char *p1 = str1; const char *p3 = str1; const char *p2 = str2; while(*p1 != *p2 && *p1 && *p2) { *p1++; *p3++; } while(*p1 == *p2){ *p1++; *p2++; } return (*p2 ? NULL : (char*)p3); } //------------------------------ 終了 ------------------------------------// //---------------------------- MyStrcat ----------------------------------// char *MyStrcat(char *str1, const char *str2) { char *p1 = str1; const char *p2 = str2; while(*p1 != NULL){ p1++; } if(*p2){ while(*p2 != NULL){ *p1 = *p2; p1++; p2++; } } if(*p2 == NULL){ *p1 = *p2; } return p1; } //------------------------------ 終了 ------------------------------------// //---------------------------- MyStrcmp ----------------------------------// int MyStrcmp(const char *str1, const char *str2) { const char *p1 = str1; const char *p2 = str2; while(*p1 != NULL || *p2 != NULL){ if(*p1 == *p2){ p1++; p2++; }else{ if(*p1 < *p2) return -1; if(*p1 > *p2) return 1; } } return 0; } //------------------------------ 終了 ------------------------------------// //----------------------------- MyMemcpy -----------------------------------// void *MyMemcpy(void *str1, void *str2, size_t n) { char *p1 = (char*)str1; char *p2 = (char*)str2; while(n--){ *p1 = *p2; p1++; p2++; } return str1; } //------------------------------ 終了 ------------------------------------// //---------------------------- MyStrcpy ----------------------------------// char *MyStrcpy(char *str1, const char *str2) { char *p1 = str1; const char *p2 = str2; while( *p2 != NULL){ *p1 = *p2; p1++; p2++; } if(*p2 == NULL){ *p1 = *p2; } return p1; } //------------------------------ 終了 ------------------------------------// //---------------------------- MyMe
- ベストアンサー
- C・C++・C#
- Constステートメントの使い方
Constステートメントの使い方 VBAをはじめて1か月の初心者です。 Constは定数を宣言するステートメントと聞きます。 ある参考書から以下のコードを抜粋しました。 Const シート名 = "商品一覧!" Const リスト先頭 = シート名 & "B4" 1.「シート名」は商品一覧とする。 2.「リストの先頭」は商品一覧のB4セルとする。 ということになると思いますが、ここで質問です。 1."商品一覧!"の「!」はどういう意味でなぜ付いているの でしょうか? 2.例えば上記の宣言を Const シート名1 = "商品一覧!" Const リスト先頭1 = シート名1 & "B4" Const シート名2="顧客一覧!" Const リスト先頭2 = シート名2 & "B4" という記述にしてsheet3の顧客一覧を定数として 宣言することは可能でしょうか? (もちろんsheet3には予め顧客一覧の表を入力し、 当初のコードに合わせた改良コードは用意するつもりです) ※ユーザーフォームから納品書を入力するためのサンプル コードの一部を抜粋しています。sheet1には納品書、sheet2には 商品一覧の表が既に用意されています。 以上、よろしくお願いします。
- ベストアンサー
- Visual Basic
- lavie direct A23 を利用していますが、ユーザー切り替えができません。スタートをクリックし、ユーザー変更を試みますが、変更画面が一瞬表示された後、もとのユーザー画面に戻されてしまいます。
- この問題の解決方法を教えていただけないでしょうか?お願いします。
- NEC 121wareのWindowsに関する質問です。