![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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型については、不勉強で申し訳ありませんが、普段利用していないため、回答を避けさせていただきます。
No.1
- 回答日時:
C/C++には、Char型やString型というのは、少なくとも標準の範囲では存在しません。
使用されているライブラリを特定してください。
もしかしてchar型とstd::string型のことでしょうか?
この回答への補足
>もしかしてchar型とstd::string型のことでしょうか?
断言はできませんがそうだと思います。ヘッダファイルの後に、
using namespace std;
と、書いています。Stringに関しては、初心者用の参考書のため、文字を扱うものです。程度の説明しかないのです。Charも文字を扱うんじゃないの?っていう単純な疑問なんですが・・・・。申し訳ありません・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムによく出てくるst...
-
VB6.0でのバイナリデータの扱い...
-
16進数を2文字ずつ配列に格納し...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
VBA-DLLの引数受け渡しについて
-
関数に文字列を渡すことについて
-
sprintf関数について教えて下さ...
-
#include <stdio.h> int main(v...
-
C言語のintとcharの違いってな...
-
C言語で特定列だけを抽出して配...
-
配列の要素数に変数を入れたい...
-
C言語 配列の長さの上限
-
4勤2休のシフト作成
-
動的メモリの初期化方法について。
-
あるディレクトリ内のファイル...
-
char AA[]{"全角文字"};から"全...
-
init関数の意味
-
ユーザー定義型変数の一括初期化
-
2次元配列のマスを数える方法...
-
newしないオブジェクトについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
プログラムによく出てくるst...
-
TCL言語で文字列検索方法を教え...
-
C++で入力した文字列から数字を...
-
%dなどの違い
-
WSH(VBS)でJSONの文字列を読み...
-
VB6.0でのバイナリデータの扱い...
-
16進数を2文字ずつ配列に格納し...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C#でstringをポインタとして渡す
-
シリアル通信で0x00を送信した...
-
char型配列の最大要素数
-
構造体→文字列→構造体 をする方法
-
VBA-DLLの引数受け渡しについて
-
数字の入った配列をファイルへ...
-
Shift_JIS(16進)を文字に変換す...
-
文字コードによる表記
-
引用符と二重引用符
-
C言語の勉強しています。すみま...
-
アルファベットの出て来た回数
おすすめ情報