- 締切済み
文字列と配列について
文字列に数字を入力して、それを配列に入れて扱いたいのですが、誰かわかる人いたら教えてもらえませんか? また、参考となるソースなどを載せてもらえたらうれしいです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- WizTaka
- ベストアンサー率53% (7/13)
koko_u_ さんがおっしゃっている string というのは,STL (Standard Template Library) というヤツです. 以下のサイトでも解説されています. http://www.wakhok.ac.jp/~sumi/stl/header/string.html この string という型を利用すると,文字列を簡単に扱うことができます. 以下のように書いてみて下さい. //-------------------------------------------------------- #include <iostream> #include <string> using namespace std; int main() { string strTest = "0123456789"; cout << strTest << "\n"; return 0; } //-------------------------------------------------------- コンソールに 0123456789 と表示されたハズです. "0123456789" という文字列をひとつのオブジェクトとして扱ったことがお分かりかと思います. この string 型というのはとっても便利で,配列のように扱うことも可能にしてくれています. cout の行を以下のように書き換えてみて下さい. cout << strTest[3] << "\n"; すると,コンソールに 3 と表示されたハズです. 配列のように扱うことができたことを確認できたと思います. string 型のままで配列のように扱うことができるので別の配列に入れる必要はありませんが,もしやりたいのならば,以上をヒントに new 演算子等を使ってやってみて下さい.
- Oh-Orange
- ベストアンサー率63% (854/1345)
★前回の続き(関連)の質問ですか? >文字列に数字を入力して、それを配列に入れて扱いたいのですが、誰かわかる人いたら教えてもらえませんか? ↑ 前回の続きかい? ・入れたい配列の型や桁数でいろいろと変わってきます。 もしも前回の続きであれば一旦文字列領域に数字文字列を読み込ませて その文字列領域から配列の1つに10進数4桁ずつセットしていく関数を 作ります。前回関数を作りたくないと書かれていましたが作りましょう。 ・それから小数を扱うのか、整数のみかで変わってきます。 さらに符号付き、符号なしでも変わります。 >また、参考となるソースなどを載せてもらえたらうれしいです。 ↑ 一応、載せておきますが理解できますか? サンプル:符号付きの整数のみのバージョン #define MAX_NUM1 (25) // 加減算用(100桁) #define MAX_NUM2 (50) // 乗除算用(200桁) #define MAX_LOG10 (4) // 1要素4桁 class abc { int m_sin; int m_len; int m_num[ 50 + 1 ]; // 1要素4桁×50個=200桁(乗算用に2倍にしておく) public: abc& set( const char string ); // 代入 }; // 代入 abc& set( const char string ) { int pos, len; // 符号処理 for ( m_sin = +1 ; ; string++ ){ if ( *string == '+' ){ m_sin *= +1; } else if ( *string == '-' ){ m_sin *= -1; } else break; } // 開始位置 len = (int)strlen( string ); pos = (len / MAX_LOG10); len = (len % MAX_LOG10); m_len = pos; // 読み込み do { int value = 0; while ( --len >= 0 ){ value = (value * 10) + (*string++ - '0'); } m_num[ pos ] = value; len = (MAX_LOG10 - 1); } while ( --pos >= 0 ); // 長さの補正 while ( --m_len >= 0 ){ if ( m_num[m_len] != 0 ){ m_len++; return *this; } } m_len = 0; m_sin = 0; return *this; } 以上。
- koko_u_
- ベストアンサー率18% (459/2509)
>もう少し簡単な形で教えていただけませんか? 無理言うなよ。。。 むしろ外していると思って回答を付けたので、SYSYSYSY さんが本当にしたいことを補足にどうぞ。
- koko_u_
- ベストアンサー率18% (459/2509)
>文字列に数字を入力して std::string num; std::cin >> num; >それを配列に入れて扱いたいのですが char buf[128]; std::copy(num.begin(), num.end(), buf); ということ?
補足
>std::string num; >std::copy(num.begin(), num.end(), buf); すいません、C++を習いたてでこの二箇所がよくわからないので、もう少し簡単な形で教えていただけませんか?
補足
かなり難しいです・・・。