web-dev-qa-db-ja.com

C ++でのchar配列の連結

次のコードがあり、「こんにちは、お元気ですか」などの文字で終了したいと思います。 (これは私が達成しようとしていることのほんの一例です)

2つのchar配列を連結して、途中に「、」と「あなた」を追加するにはどうすればよいですか?最後に?

これまでのところ、これは2つの配列を連結しますが、思いつく最終的なchar変数に追加の文字を追加する方法がわかりません。

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    char foo[] = { "hello" };
    char test[] = { "how are" };
    strncat_s(foo, test, 12);
    cout << foo;
    return 0;
}

編集:

これはあなたのすべての返事の後に私が思いついたものです。これが最善のアプローチかどうか知りたいのですが?

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    char foo[] = { "hola" };
    char test[] = { "test" };
    string foos, tests;
    foos = string(foo);
    tests = string(test);
    string concat = foos + "  " + tests;
    cout << concat;
    return 0;
}
7
Matimont

C++では、std::string、 そしてその operator+、それはこのような問題を解決するために特別に設計されています。

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

int main()
{
    string foo( "hello" );
    string test( "how are" );
    cout << foo + " , " + test;
    return 0;
}
12
quantdev

一番良いのは使用std::string C++では他の回答として。 charを使用する必要がある場合は、この方法を試してください。テストされていません。

const char* foo = "hello";
const char* test= "how are";

char* full_text;
full_text= malloc(strlen(foo)+strlen(test)+1); 
strcpy(full_text, foo ); 
strcat(full_text, test);
4

はい、C++では+文字列連結の演算子。しかし、これは機能しません:

char[] + char[] + char[]

1つの配列をstd :: stringに変換します。

std::string(char[]) + char[] + char[]

例えば。:

#include <iostream>

int main()
{
    const char a[] = "how ";
    const char b[] = "are ";
    const char c[] = "you ";

    std::cout << std::string( a + b + c ) << "\n"; // Error
    std::cout << std::string(a) + b + c  << "\n"; // Fine
}
0
jav