質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

32205閲覧

配列に文字列を入れたい

FfJab

総合スコア17

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/08/17 12:53

c++をまったくやったことがなく分からないことだらけで質問しています。ご了承ください。

サイズの決まった2次元の配列を用意して、文字列を代入していきたいです。
コンパイルが通らないものなのですがどのように変更したらよいか調べてもよくわかりませんでした。

'#include<string>

char mojiretu[10][64];

int main(){
std::string s = "aaaaaaa";
std::string s2 = "bbbbbbb";

mojiretu[0] = s;
mojiretu[1] = s2;

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

C++

1#include <string> 2#include <algorithm> 3 4char mojiretu[10][64]; 5 6int main(){ 7 std::string s = "aaaaaaa"; 8 std::string s2 = "bbbbbbb"; 9 10 // 終端の'\0'はコピーされないので注意。 11 std::copy( s.begin(), s.end(), mojiretu[0]); 12 std::copy(s2.begin(), s2.end(), mojiretu[1]); 13 14}

投稿2016/08/17 18:59

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FfJab

2016/08/18 12:05

回答ありがとうございます。文字列には苦戦しております。やり方を教えていただきありがとうございます。
guest

0

ベストアンサー

C++なのに、あえてmojiretuをchar配列にする理由があるのでしょうか。

C++

1std::string mojiretu[10]; 2```このように定義しておけば、 3 4```C++ 5mojiretu[0] = s; 6mojiretu[1] = s2; 7```↑は問題なく通ります。 8 9もし、どうしてもmojiretuがchar配列でないと困るのなら、このようにしてください。 10```C 11strcpy(mojiretu[0], s.c_str()); 12strcpy(mojiretu[1], s2.c_str());

投稿2016/08/17 14:19

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FfJab

2016/08/18 12:03

回答ありがとうございます。char配列でのやり方,stringクラスでのやり方ともに教えていただきありがとうございました。char配列にするのかどうか今後検討して決めていきます。
guest

0

こんにちは。

とりあえず、C言語的に下記でできます。
C++は概ねCのアッバーコンパチなのでC++でコンパイルできます。

C

1#include<stdio.h> 2 3char mojiretu[10][64]= 4{ 5 "aaaaaaa", 6 "bbbbbbb" 7}; 8 9int main() 10{ 11 for (int i=0; i < 10; ++i) 12 { 13 printf("%s\n", mojiretu[i]); 14 } 15 16 return 0; 17}

固定長の配列に文字列を放り込むことがC++らしくないのです。
固定長配列に文字列を入れた後、どのような処理をするのでしょうか?
その内容次第でより適切な方法が大きく変わると思います。

投稿2016/08/17 13:31

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FfJab

2016/08/18 12:02

回答ありがとうございます。固定長の配列はC++らしくないのですね。まだ分からないことが多いので勉強になりました。
guest

0

左辺がプリミティブな型(char配列)です。全てをstringクラスを使って高水準な処理をするか、低水準なデータに変換する必要があります。

要するに、C++風にするか、C風にするかの統一が必要です。後者であればc_str()メンバ関数を使ってchar配列のデータを得ることができます。あとはsprintf関数でプリミティブな変数に代入するなりできます。

投稿2016/08/17 13:04

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FfJab

2016/08/18 12:02

回答ありがとうございます。どちらかに統一する必要があるのですね。勉強になります。c風にするやり方も教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問