- ベストアンサー
szの意味
現在WindowsAPIなどを学習しているのですが、 しばしばsz~とかいう変数名が付けられているサンプルを見ます。 char szBuf[256]; みたいな感じです。 推測するに文字列型のものに付けられているみたいですが、 このszって何の略なんでしょうか? sは恐らくStringなのかなとは思いますが・・・。 後もし変数名の規則などが書かれているサイトがありましたら ご紹介頂けたらと思います。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 【 REG_SZ 】 (レジストリのデータ型の一つ) のことで
レジストリ(registry)で用いられるデータ型の一つに、 【 REG_SZ 】: 単純な文字列 というのがありますが、 ここでの "SZ" という表し方は、何から来ているんでしょうか? "S" は String のことかなと思ったりもするんですが、 "Z" の方は見当が付きませんもので。 ---- 同じデータ型でも、 【 REG_BINARY 】: バイナリ値 なんかですと、"そのまんま" なんですけどね。 --
- ベストアンサー
- Windows XP
- 動的な変数名のつけ方について
■環境 OS:XP 言語:C++ コンパイラ:Visual C++ 2008 char*やstd::string等で格納された文字列を使用して 変数を宣言することは可能でしょうか。 用途として、テキストファイル等から文字列を取得し その文字列を変数名としてプログラミング内で使用するという方法を考えています。 よろしくお願い致します。
- ベストアンサー
- C・C++・C#
- 変数の使用方法
ファイルを読み込み、 任意の文字列だけを変数にするプログラムを記述したのですが、 sscanfでその文字列を各変数に代入し、 if((fd = popen("smbmount cause /mnt/date -o username=user","r")) != NULL){ の行で展開させようとしたのですが、 確認したところ、取得した値が代入していませんでした。 printf("%s\n", cause);の場合は、実行後、画面に表示するのですが、 変数型に問題があるのでしょうか。 すみませんが、何が問題なのかご教授よろしくお願いいたします。 FILE *fp; FILE *fd; char string[MAX_LEN]; char cause[256],point[256],user[256],passwd[256]; char id[256]; while ((fgets(string, MAX_LEN, fp)) != NULL) { string[strlen(string) - 1] = '\0'; if(sscanf(string, "connect cause = %s", &cause) == 1){ }else if(sscanf(string, "connect point = %s", &point) == 1){ }else if(sscanf(string, "username = %s", &user) == 1){ if((fd = popen("smbmount cause /mnt/date -o username=user","r")) != NULL){ } pclose(fd); } } fclose(fp);
- ベストアンサー
- C・C++・C#
- C(char *s1)の文字列をObjective-Cの文字列(NSS
C(char *s1)の文字列をObjective-Cの文字列(NSString *s2)にするにはどうしたらよいのでしょうか? char s1[] = "abc"; NSString *s2 = [[NSString alloc] initWithUTF8String:s1]; // (A) NSLog(@"s2=[%s]", s2); 結果がabcかなと思っていましたが、読めない変な文字が表示されました。 (A)を NSString *s2 = [NSString stringWithFormat:@"%s", s1]; に変えても同じでした。 s1のC文字列は日本語を含まないアルファベットの文字列なのになぜ?と 困っています。 Objective-Cの初心者で申し訳ありません。
- ベストアンサー
- C・C++・C#
- VC++.net iniファイルパス指定の仕方
VC++2005.netマネージでiniファイルを使いたいと思っています。 iniファイルから変数を読み込む関数GetPrivateProfileInt,GetPrivateProfileStringの引数にはiniファイルの絶対パス(c:\~set.ini)を指定しなければならないようです。 実行ファイルと同じ場所にiniファイルを置きたいのですが、これはどうやって指定するのでしょうか。 私が思いついたコードです。 String ^exepath = gcnew String(System::Windows::Forms::Application::ExecutablePath);//実行ファイルのパスを取得。 char charpath[500]={0}; sprintf(charpath,"%s",exepath->ToString);//string型からchar型へ変換する。 int len = strlen(charpath); charpath[len - ??] = \0;//実行ファイル名を消す char ininame[] = "setting.ini"; strcat(charpath,ininame); これは実行ファイルの絶対パスと実行ファイル名を取得し加工します。 c:\~~\prog\test.exe(string型の文字列) ↓ c:\~~\prog\test.exe(char型の文字列) ↓ c:\~~\prog\ (後ろつまり実行ファイル名の部分を削る) ↓ c:\~~\prog\setting.ini (iniファイル名を後ろに追加する。) ただ、これには問題がありこの変数を引数にしたのでは >'GetPrivateProfileIntW' : 1番目の引数を'const char[10]'から'LPCWSTRに変換できません。 と出ます。 どうすればiniファイルのパスを指定できるのでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- 文字列や文字から整数への変換方法について
文字列(string型)や文字(char型)から整数(int型など)に変換 する時のルールがよく解りません。 たとえば、キーボードから数字を打って、その入力された数字を 数値として整数型の変数に代入したい場合のやり方です。 ちょっとプログラムを作ってみました。 using System; class clmain { private static void Main() { Console.Write("1桁の整数を入れてね "); char ch = char.Parse(Console.ReadLine()); int by1 = (int)ch; int by2 = (int)char.GetNumericValue(ch); Console.WriteLine("by1 = {0}, by2 = {1}, ch = {1}", by1, by2, ch); Console.Write("整数を入れてね "); string st = Console.ReadLine(); /* by = (int)st; コンパイルエラー */ int by3 = int.Parse(st); Console.WriteLine("by3 = {0}, st = {1}", by3, st); } } まず、char型からint型への変換では、 int型変数=(int)char型変数; はコンパイルは通りますけど、実行すると全く違った値が入って しまいます。たとえば char型変数の値が "1" だと、int型変数には 49 が入ります。 int型変数 = (int)char.GetNumericValue(char型変数); と書いてようやく、思い通りの動きをしてくれます。 また、string型からint型への変換では int型変数=(int)string型変数; はコンパイルエラーになります。 int型変数 = int.Parse(string型変数); とするとコンパイル出来て正しく動きます。 これで質問ですけど、 (1)なぜstring型とchar型で、int型への変換方法が違うのでしょうか? (2)int型変数=(int)char型変数; とすると、上に書いたように、全く 違った(希望しない)値が代入されてしまいます。これは、どういう 動きをしているのでしょうか? また、これはコンパイルエラーに なりませんけど、どういう時にこの書き方をするのでしょうか? 解る方、お願いします。
- ベストアンサー
- C・C++・C#
- char型とstring型について
char型とstring型について質問があります。 言語はC++です。 以下の関数があったとします。 void test(string a, string b string c){ 処理 } この関数を下記のように利用した場合について質問があります。 a.引数に直接文字列を挿入したケース test("aaa","bbb","ccc") b.変数に文字列を設定し、変数を引数にしたケース string a="aaa" string b="bbb" string c="ccc" test(a,b,c) (1)はコンパイルエラーになり、(2)は成功しました。 同じ様に見えるのですが、何が違うのでしょうか? また、関数の引数の型をchar*にした場合、(1)(2)のケースでコンパイルが通りました。char*型だと何が違うのでしょうか?
- ベストアンサー
- C・C++・C#
- 関数の引数をポインタで行う
****サンプル1******* main() { char* buff; a(buff); printf("%s",buff); return OK; } ****サンプル2******* main() { char buff[1+1]; a(buff); printf("%s",buff); return OK; } サンプル1では、変数buffは値が入らずサンプル2では 成功します。 なぜですか? プログラムにおける、細かい指摘はご了承ください。
- ベストアンサー
- C・C++・C#
- C++で>>演算子のオーバーロード
C++学習者です。 Visual Studio Community 上で、ある教本を使って勉強しています。 現在Stringというクラスを作って、文字列に対して連結や部分文字列の取り出しなどができるようにするための色々な演算子のオーバーロードをする関数を定義していますが、疑問点がありますので、お聞きしたいと思います。 Stringクラスのプライベート変数は、文字列の長さを表すlength と、new 演算子で動的に確保するメモリー領域の始まりのアドレスを表す *sPtr の二つです。 クラス内ではパブリックなメンバー関数としていろいろな演算子がオーバーロードされていて、これらについてはよく理解できるのですが、friend 関数として定義されている入力演算子(>>)について納得がいかない部分があります。 その関数は次のようになっています。 istream &operator>>(istream &input, String &s) { char temp[100]; input >> setw(100) >> temp; s = temp; return input; } わからないのは s = temp; の部分です。 sはStringクラスのオブジェクトで、temp は単なる文字列なのに、なぜ代入できるのでしょうか? 代入演算子=のオーバーロード関数も下に挙げますが、この中でも単なる文字列をStringクラスのオブジェクトに代入できるようにはなってないように見えます。 const String &String::operator=(const String &right) { if (&right != this){ // avoid assignment of itself delete [ ] sPtr; length = right.length; sPtr = new char[ length + 1]; strcpy(sPtr, right.sPtr); } else cout<< "attempted to assign a String to itself \n\n"; return *this; } どなたか答えて頂けると有難いです。
- ベストアンサー
- C・C++・C#
- マイクロソフトのLENSアプリを使用してPDF保存した文書をWindowsPCに転送する方法
- WindowsPCから見えるのは写真が入ったフォルダだけで、他のファイルの転送にはソフトを使用する必要がある理由
- iPhoneのファイル保存の項目がうまく機能せず、iCloud経由でWindowsPCにファイルを転送する手段に不満を抱く
お礼
なるほど。ありがとうございました。