文字配列から5文字をコピーしようとしていますstd::string
char name[] = "Sally Magee";
std::string first;
copy(name, name + 5, first.begin()); //from #include <algorithm>
std::cout << first.c_str();
ただし、文字列に加えて、不要な印刷できない文字が大量に含まれています。何か案は?ありがとう。
やるだけ
char name[] = "Sally Magee";
std::string first(name, name + 5);
std::cout << first << std::endl;
std::string コンストラクタリンクを参照してください
アルゴリズムが行うことは、std::copy
ソース要素を次々にコピーし、各要素の後に宛先反復子を進めることです。
これは、
したがって、このstd::copy
アルゴリズムを使用する場合、これを解決するには 2 つの方法があります。
コピーを作成する前に文字列のサイズを変更します。
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
char source[] = "hello world";
std::string dest;
dest.resize(5);
std::copy(source,source+5,begin(dest));
std::cout << dest << std::endl;
return 0;
}
標準の反復子の代わりに後方挿入反復子を使用する:
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
int main()
{
char source[] = "hello world";
std::string dest;
std::copy(source,source+5,std::back_inserter(dest));
std::cout << dest << std::endl;
return 0;
}
ただし、他の人が指摘したように、初期化時に最初の 5 文字を文字列にコピーするだけの場合は、適切なコンストラクターを使用することが明らかに最適なオプションです。
std::string dest(source,source+5);