No.1
- 回答日時:
C/C++には、Char型やString型というのは、少なくとも標準の範囲では存在しません。
使用されているライブラリを特定してください。
もしかしてchar型とstd::string型のことでしょうか?
この回答への補足
>もしかしてchar型とstd::string型のことでしょうか?
断言はできませんがそうだと思います。ヘッダファイルの後に、
using namespace std;
と、書いています。Stringに関しては、初心者用の参考書のため、文字を扱うものです。程度の説明しかないのです。Charも文字を扱うんじゃないの?っていう単純な疑問なんですが・・・・。申し訳ありません・・。
No.2ベストアンサー
- 回答日時:
>もしかしてchar型とstd::string型のことでしょうか?
断言はできませんがそうだと思います。ヘッダファイルの後に、
そうだという前提で回答します。
char型は1文字だけ格納するために使うのに対して、std::string型は文字列、例えば"Hello, World"といった複数の文字からなる並びを格納するためのクラスです。(厳密にはstd::basic_string<char>のtypedef名です)
No.3
- 回答日時:
私がCプログラマなため、C++の知識が少々不足していることを最初にお断りいたします。
Cにおけるchar型というのは、asciiストリング1文字が入るサイズの変数を指します。
すなわち、7ビット以上の1バイトの整数変数のことです。現在主流のパソコンにおいては、8ビット=1バイトなので、符号なし8bitまたは符号付7bitの整数変数です。
このような持って回った言い方をしたのは、過去には9ビット=1バイトのCPUがあったからです。
さて、ご存知のことかと思いますが、char型の変数は上述したように1文字しか入りませんので、文字列を扱いたい場合、char c_string[32]というように配列にして取り扱います。しかし、配列でしかありませんので、文字列の終端がわかりません。このため、文字列の後ろに0を代入し文字終端とします。
利点としては、文字列を単なる配列として利用するため、文字列をスキャンしたりする際にコードが簡単になります。
例:strlenの参考実装(エラー処理は省く)
int strlen(char *p)
{
int cnt=0;
while(*p++) cnt++;
return cnt;
}
弱点としては、配列でしかないため、バッファオーバフローを起こすコードを簡単に書けてしまうことです。
例:sprintfを利用した場合
int foo(void )
{
char buf[256];
char *e;
e = getenv("PATH");
sprintf(buf, "path=%s\n", e);
...以下略
この例において、環境変数PATHが250バイト以上あったらbufのさいずをオーバーしてメモリを壊してしまう。
C++のstd::String型については、不勉強で申し訳ありませんが、普段利用していないため、回答を避けさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 美術・アート 液タブかsurface proか、作画作業の面だけで比較をお願いします 2 2022/07/10 01:48
- 国産車 車高調の選択について 3 2023/02/03 20:07
- 中学校 学校の夏休みの課題で『SDGsについて考えよう!』 という課題があります。 そして、SDGsの17の 6 2022/08/20 12:18
- 中学校 学校の夏休みの課題で『SDGsについて考えよう!』 という課題があります。 そして、SDGsの17の 2 2022/08/19 21:51
- 中学校 学校の夏休みの課題で『SDGsについて考えよう!』 という課題があります。 そして、SDGsの17の 1 2022/08/20 20:45
- その他(スマートフォン・携帯電話・VR) Androidから初めてiPhoneに変えようと思うのですが、初めてなものでやや不安です 自分はXp 2 2022/11/03 23:38
- 一眼レフカメラ 初めてミラーレス一眼の購入。おすすめ製品について教えていただきたいです。 6 2023/08/03 20:31
- その他(教育・科学・学問) 理系大学生 実験レポート 物性の書き方 参考文献 理系大生の実験レポートについて、主に化学系です。 1 2022/04/19 21:46
- 新卒・第二新卒 化学科4年就活生です 企業A.Bどちらにするか迷っています。どちらも環境分析系の企業です。入社したら 3 2022/05/05 00:02
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
_tcscpy_s(wcscpy_s)の第二引数...
-
TCL言語で文字列検索方法を教え...
-
プログラムによく出てくるst...
-
ASPで別サイトの内容を Stream ...
-
括弧が含まれる文字列の括弧の...
-
fgetsで配列に数字を入れる。
-
VBA-DLLの引数受け渡しについて
-
ソースコードの間違い (C言語)
-
曜日を格納する配列の大きさ
-
C#でstringをポインタとして渡す
-
C++で入力した文字列から数字を...
-
VC++6.0 MFC ダイアログバーを...
-
ExcelVBAで質問です。離れた二...
-
c言語
-
C言語 配列の長さの上限
-
パイソンの
-
mallocについて
-
Excelですべての組合せ(重複組...
-
関数から配列を返すには?
-
文字列内の数字削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C++で入力した文字列から数字を...
-
nullと""、\\0とEOFの違いにつ...
-
プログラムによく出てくるst...
-
%dなどの違い
-
WSH(VBS)でJSONの文字列を読み...
-
TCL言語で文字列検索方法を教え...
-
C#でstringをポインタとして渡す
-
16進数を2文字ずつ配列に格納し...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C++で文字列の右端から特定の文...
-
シリアル通信で0x00を送信した...
-
VBA-DLLの引数受け渡しについて
-
数字の入った配列をファイルへ...
-
c#で他のアプリの文字入力フォ...
-
構造体→文字列→構造体 をする方法
-
Shift_JIS(16進)を文字に変換す...
-
バイナリファイル中の日本語文...
-
C言語の課題で困っています;
-
[C++]WCHARの1文字目しか表示で...
-
VB6.0でのバイナリデータの扱い...
おすすめ情報