みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

char型とstring型について

char型とstring型について質問があります。
言語はC++です。

以下の関数があったとします。

void test(string a, string b string c){
処理
}

この関数を下記のように利用した場合について質問があります。
a.引数に直接文字列を挿入したケース
test("aaa","bbb","ccc")

b.変数に文字列を設定し、変数を引数にしたケース
string a="aaa"
string b="bbb"
string c="ccc"
test(a,b,c)

(1)はコンパイルエラーになり、(2)は成功しました。
同じ様に見えるのですが、何が違うのでしょうか?

また、関数の引数の型をchar*にした場合、(1)(2)のケースでコンパイルが通りました。char*型だと何が違うのでしょうか?

投稿日時 - 2009-12-21 23:05:59

QNo.5538960

困ってます

質問者が選んだベストアンサー

> (1)はコンパイルエラーになり、

再現できませんでした。他に理由があるのでは?

#include <iostream>
#include <string>

using namespace std;

void test(string a, string b, string c) {
cout << a << b << c << endl;
}

int main() {
test("aaa","bbb","ccc");
string a = "aaa";
string b = "bbb";
string c = "ccc";
test(a,b,c);
}

投稿日時 - 2009-12-21 23:27:02

お礼

当方の確認ミスでした。
ソースまで提示して頂き、ありがとうございました。

投稿日時 - 2009-12-22 00:35:09

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>(1)はコンパイルエラーになり、(2)は成功しました。

両者の違いが再現できる、最小限のソースを提示してください。
また、どんなコンパイルエラーが出たかも提示してください。

投稿日時 - 2009-12-21 23:41:00

お礼

失礼いたしました。
コンパイルエラーは内部の処理のほうでした。
ご回答ありがとうございます。

投稿日時 - 2009-12-22 00:34:35

ANo.1

(1) と (2) は「同じ」といえば同じになります. 処理系のバグじゃないかなぁ. 処理系がわからんとなんとも判断できないけど.

投稿日時 - 2009-12-21 23:25:23

お礼

当方のミスです。
申し訳ございません。
ご回答ありがとうございました。

投稿日時 - 2009-12-22 00:35:58

あなたにオススメの質問