Bonjour,

j'ai essayé d'implémenter cette faq. Cela consiste à convertir une chaîne de caractères en majuscule.

Voici mon code (c'est le même que la faq):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <algorithm>
#include <cctype>
#include <string>
//...
 
struct ps_toupper
{ 
    char operator()(char c) const 
    {
        return std::toupper(static_cast<unsigned char>(c));
    } 
};
 
std::string UpperCase(std::string str) 
{
    return std::transform(str.begin(), str.end(), str.begin(), ps_toupper()); // erreur ici
}
Et ça ne compile pas. J'obtiens une erreur sur la ligne "std::transform". L'erreur est la suivante:
c:\dev\tests\dumcpp\cconfigreader.cpp(157) : error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it)' : cannot convert parameter 1 from 'std::_String_iterator<_Elem,_Traits,_Alloc>' to 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
and
[
_Elem=char,
_Traits=std::char_traits<char>,
_Alloc=std::allocator<char>
]
and
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Je suis sous Visual Studio 2005 (donc Windows).

Je n'ai pas encore cherché d'où vient le problème, je tenais d'abord à vous en faire part.