In C++, you will probably have to write your own, assuming your tensor contains results from N batches and you wanted to write it as one sample per row, something like this could work:
void SaveCsv(torch::Tensor t, const std::string& filepath, const std::string& separator = ",")
{
	t = t.flatten(1).contiguous().cpu();
	float* ptr = t.data_ptr<float>();

	std::ofstream csvHandle(filepath);

	for (size_t i = 0; i < t.sizes()[0]; ++i)
	{
		for (size_t k = 0; k < t.sizes()[1]; ++k)
		{
			csvHandle << *ptr++;

			if (k < (t.sizes()[1] - 1))
			{
				csvHandle << separator;
			}
		}

		csvHandle << "\n";
	}
}

void main()
{
	try
	{
		auto t = torch::randn({ 3, 4, 5 });

		SaveCsv(t, "D:\\test.csv");
	}
	catch (std::runtime_error& e)
	{
		std::cout << e.what() << std::endl;
	}
	catch (const c10::Error& e)
	{
		std::cout << e.msg() << std::endl;
	}

	system("PAUSE");
}