1. ホーム
  2. c++

[解決済み] C++で文字列とintを掛け合わせる

2022-02-11 03:16:41

質問

を使うにはどうしたらいいのでしょうか?

string s = ".";

もし私が

cout << s * 2;

と同じになるのでしょうか?

cout << "..";

?

解決方法は?

いいえ。 std::string はありません。 operator * . 他の文字列に(char, string)を追加することができます。これを見てください。 http://en.cppreference.com/w/cpp/string/basic_string

また、このような動作が必要な場合(これはアドバイスなし)には、次のようなものを使用することができます。

#include <iostream>
#include <string>

template<typename Char, typename Traits, typename Allocator>
std::basic_string<Char, Traits, Allocator> operator *
(const std::basic_string<Char, Traits, Allocator> s, size_t n)
{
   std::basic_string<Char, Traits, Allocator> tmp = s;
   for (size_t i = 0; i < n; ++i)
   {
      tmp += s;
   }
   return tmp;
}

template<typename Char, typename Traits, typename Allocator>
std::basic_string<Char, Traits, Allocator> operator *
(size_t n, const std::basic_string<Char, Traits, Allocator>& s)
{
   return s * n;
}

int main()
{
   std::string s = "a";
   std::cout << s * 5 << std::endl;
   std::cout << 5 * s << std::endl;
   std::wstring ws = L"a";
   std::wcout << ws * 5 << std::endl;
   std::wcout << 5 * ws << std::endl;
}

http://liveworkspace.org/code/52f7877b88cd0fba4622fab885907313