2017-10-13 13 views
-1

私は文字通りC++を勉強し始めました。昨日、私はJavaの基礎知識があり、基本を試しています。私はこの言語の構文を理解するための非常に基本的なプログラムを作ろうとしています。C++の関数で文字列と文字列のサイズを組み合わせるにはどうすればよいですか?

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string bacon = "How many characters are in the following? "; 
    string chedder = "icecream"; 
    string cheSize = chedder.size(); 
    string snow = bacon + " " + "\"" + chedder + "\"" + "The number is : " + cheSize; 

    cout << snow; 
    return 0; 
} 

私は間違っていますか?カントが動作しない例

cout << snow + chedder; 

のために、複数の文字列を組み合わせCOUT

また、私は気づきました。

これにはどのような理由がありますか?あなたの時間をありがとう!

+2

'string cheSize = chedder.size();' sizeはintではなく文字列を返します。 – Raindrop7

+0

ものを使う前に[有名なマニュアルを読む](http://en.cppreference.com/w/cpp/string/basic_string)はどうですか? – user0042

+1

ランダムなものを実行してstackoverflowになぜそれが動作しないのかを尋ねることで、C++を学ぶことはできません。 –

答えて

1

表現

chedder.size() 

は整数型std::string::size_typeを持っています。クラスstd::stringには、整数を暗黙的にタイプstd::stringのオブジェクトに変換できる変換コンストラクタはありません。

だから、この文

string cheSize = chedder.size(); 

は間違っています。

この理由により、タイプstd::stringのオブジェクトと整数のオーバーロードはありませんoperator +です。その代わりに、整数を文字列に変換してoperator +を適用するには、標準関数std::to_stringを使用する必要があります。

はので、代わりに次のコード

string bacon = "How many characters are in the following? "; 
string chedder = "icecream"; 
string::size_type cheSize = chedder.size(); 
string snow = bacon + " " + "\"" + chedder + "\"" + "The number is : " + to_string(cheSize); 

cout << snow << endl; 

そして

cout << snow + chedder; 

は、両方の変数は、型のstd ::文字列を持っているか、そのうちの一つがタイプSTDを持っていることが正しい提供され、この文を使用します。 :stringとotherには、文字配列の型またはcharへのポインタがあります。

0

あなたはおそらく望んでいた:

cout << snow << " " << chedder; 

はまたchedder.size();戻ります整数、文字列ではなく、ということに注意してください。

1

size()は、stringではなく整数型(具体的にはstd::string::size_type)を返します。また、他の言語とは異なり、文字列変数に代入すると、C++は整数をstringに自動的に変換しません。

C++ 11以降を使用している場合は、to_string()メソッドを使用して変換できます。

string cheSize = chedder.size().to_string(); 
+0

['std :: string :: size()'](http://en.cppreference.com/w/cpp/string/basic_string/size)は 'std :: string :: size_type'を正確に返します! – user0042

0

文字列オブジェクトに整数値を割り当てることはできません。

std::string cheSize = chedder.size(); // error 

あなたが望むなら、あなたはstd::to_stringを使用することができます。

std::string cheSize = std::to_string(chedder.size()); 
関連する問題