I am wondering how to convert iterator of characters __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >
to string in C++?
#include <iostream>
#include <string>
#include <algorithm>
using std::string;
#define TO_UPPER(s) (transform((s).begin(), (s).end(), (s).begin(), ::toupper))
#define TO_LOWER(s) (transform((s).begin(), (s).end(), (s).begin(), ::tolower))
int main() {
string str = "Hello world!";
string result = TO_LOWER(str);
std::cout << result << std::endl;
return 0;
}
Error:
[1/2] Building CXX object CMakeFiles/untitled.dir/main.cpp.o
FAILED: CMakeFiles/untitled.dir/main.cpp.o
/usr/bin/c++ -g -std=gnu++11 -MD -MT CMakeFiles/untitled.dir/main.cpp.o -MF CMakeFiles/untitled.dir/main.cpp.o.d -o CMakeFiles/untitled.dir/main.cpp.o -c /home/amir-pc/CLionProjects/untitled/main.cpp
/home/amir-pc/CLionProjects/untitled/main.cpp: In function ‘int main()’:
/home/amir-pc/CLionProjects/untitled/main.cpp:7:31: error: conversion from ‘__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’ to non-scalar type ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} requested
7 | #define TO_LOWER(s) (transform((s).begin(), (s).end(), (s).begin(), ::tolower))
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/amir-pc/CLionProjects/untitled/main.cpp:13:21: note: in expansion of macro ‘TO_LOWER’
13 | string result = TO_LOWER(str);
| ^~~~~~~~
ninja: build stopped: subcommand failed.