2017-09-12 17 views
1
char stringToAdd[4097] = ""; 

// some manipulations on stringToAdd to add some value to it. 

if(stringToAdd[0] != '\0') { 
response = MethodCalledHere("Some Random text"); 
} 

MethodCalledHere(const String& inputParameter) { 
// some method definition here. 
} 

"Some Random text"にstringToAddを追加しました。ような何か -文字列をconst文字列に&C++で追加する

response = MethodCalledHere("Some Random text" + stringToAdd); 

は、しかし、これは私に 「+」二つのポインタを追加することができないというエラーが発生します。

提案がありますか?

+0

あなたは 'のstd :: stringstream'を使用、またはコンストラクタの最初の文字列をカプセル化... – Charles

+0

や' STDを使用することができます:: STRING'リテラル – StoryTeller

+1

C++ 14匹のクールな猫は '使用 "" s + "Some random text" + stringToAdd; '組み込みのユーザー定義のリテラルに注意してください。 Javaの+偽装とは異なり、これは厄介ではありません。 – Bathsheba

答えて

0
auto MethodCalledHere(std::string inputParameter) { 
    inputParameter.append(stringToAdd, 
          stringToAdd + std::strlen(stringToAdd)); 
    return inputParameter; 
} 
2

しかし、これは私に「+」二つのポインタを追加することができないというエラーが発生します。

これは、この文脈では、+演算子の両側がポインタであるからです。

使用

response = MethodCalledHere(std::string("Some Random text") + stringToAdd); 

関数がchar const*を期待するならば、あなたは最初std::stringを構築し、その後std:string::c_str()を使用することができます。

std::string s = std::string("Some Random text") + stringToAdd; 
response = MethodCalledHere(s.c_str()); 

あなたがC++ 14を使用することができるならば、あなたは(提案のため@Bathshebaに起因しているおかげで)文字列リテラルを使用することができます。

response = MethodCalledHere("Some Random text"s + stringToAdd); 
+1

これは閉鎖されていますので、私は答えることはできませんが、C++ 14の方法で自由に気をつけてください:私の質問のコメントを見てください。いいですが、それはアップヴォートを持っています。 – Bathsheba

+1

@Bathsheba、提案に感謝します。変更された式がまだ有効であることを期待してください。 –

+0

それは私がそれを持っていたよりも優れています。 – Bathsheba

関連する問題