getline(cin,_string);
私はそれが完全に機能することを知っています
しかし、これはそうではありません:
char* _chArr = new char;
getline(cin,_chArr);
これでもうまくいきません:
char* _chArr = new char[30];
getline(cin,_chArr);
文字列じゃないですchar*
か??
char* は文字列ではありません
いいえ、それは a へのポインターであり、それchar
だけです。この関数std::getline
は、 では簡単に実行できないクールなこと (文字列とすべてを拡張すること) を行いますchar *
。
論理的に考えてください。char* は、文字型メモリ ブロックへの単なるポインタです。ある程度の動的メモリを割り当ててから、 strcpy() または手動でデータをコピーする必要があります。C++ では直接入力はサポートされていません。実際、文字列は、それ自体にサイズを含むオブジェクトです。それらはこの業界の専門家によって設計されており、組み込み機能のように直接的な入力と動的な成長を提供しています。string と cstring には違いがあります。Cstring は char* です。
いいえ、C++ 文字列は単なる文字配列ではありません。通常、文字配列が提供するものに加えて、カバーの下にかなりの追加要素が含まれる本格的なクラスです。