1

現在の日時で文字列を作成しようとしています

time_t t = time(NULL); //get time passed since UNIX epoc
struct tm *currentTime = localtime(&t);
string rightNow = (currentTime->tm_year + 1900) + '-'
     + (currentTime->tm_mon + 1) + '-'
     +  currentTime->tm_mday + ' '
     +  currentTime->tm_hour + ':'
     +  currentTime->tm_min + ':'
     +  currentTime->tm_sec;

エラーが発生します

'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'| の引数 1 を初期化しています。

最初の「+」が文字列で使用されていることを心配しています(連結を示す可能性があるため)、括弧内にあるという事実は加算を意味しますか?コンパイラは私が与えた最後の行でエラーを出すので、問題は別の行にあると思います。

4

1 に答える 1

9

C++ では、+ 演算子を使用して数値、文字、および文字列を連結することはできません。この方法で文字列を連結するには、次の使用を検討してstringstreamください。

time_t t = time(NULL); //get time passed since UNIX epoc
struct tm *currentTime = localtime(&t);
ostringstream builder;
builder << (currentTime->tm_year + 1900) << '-'
 << (currentTime->tm_mon + 1) << '-'
 <<  currentTime->tm_mday << ' '
 <<  currentTime->tm_hour << ':'
 <<  currentTime->tm_min << ':'
 <<  currentTime->tm_sec;
string rightNow = builder.str();

または、 Boost.Formatライブラリの使用を検討してください。これは、構文が少し優れています。

お役に立てれば!

于 2012-08-27T20:27:18.107 に答える