10

I am trying to log a message form a string variable , below is the code I used

std::string s = "ss";//std::to_string(FPaths::GetPath("../"));
 UE_LOG(LogTemp, Warning, *s);

but it's not working, Can someone tell me how to do this ? enter image description here

Kas
  • 3,209
  • 3
  • 22
  • 51

2 Answers2

18

Finally I am answering my own question here.

It doesn't compile because I need to use the TEXT Macro before giving a string into UE_LOG.

FString s = "ss";
 UE_LOG(LogTemp, Warning, TEXT("%s"), *s);

 //or

 UE_LOG(LogTemp, Warning, TEXT("ss"));

 //this should work
 UE_LOG(LogTemp, Warning, TEXT("%s"), *FPaths::GetPath("../"));

should work with Unreal's version of Datatypes instead of using the std library

Kas
  • 3,209
  • 3
  • 22
  • 51
  • You can accept your own answer if it's correct :P And try to use Unreal's string, array, map...etc. instead of std ones since Unreal has its own magic... – Marson Mao Jul 21 '16 at 13:18
  • Only the std algorithms are compatible with Unreal's containers since they support begin() and end(), otherwise I think you should use Unreal's equivalents. – Marson Mao Jul 21 '16 at 13:19
  • 2
    `UE_LOG(LogTemp, Warning, TEXT("%s"), *s);` – zwcloud Jan 19 '20 at 03:38
1

If you really have to than you can convert std::string to FString and than log that like this.

std::string someString = "Hello!";
FString layerName(someString .c_str());
UE_LOG(LogTemp, Warning, TEXT("%s"), *layerName);