2009-06-18 5 views
2

Disons que j'ai une variable CString portant la chaîne "Bob Evans". Je veux copier de la position 4 jusqu'à la fin de l'CString d'origine à une nouvelle CString, mais je ne parviens pas à trouver la sémantique des exemples pour cela:mfc copier certaines sections d'un CString

CString original("Bob Evans"); 
// Below is what I'm trying to do 
// CString newStr = original.copy(4, original.GetLength()); 

J'ai aussi pensé à copier la variable d'origine à un Chaîne STL C++, mais réaliser ceci n'est pas si facile non plus en termes de conversion. Quel serait votre conseil à ce sujet? Je pourrais commencer par stocker la chaîne dans une chaîne STL, mais ce serait un dernier recours car je ne voulais pas restructurer beaucoup de code juste pour stocker les données dans la chaîne STL au lieu de CString. Merci d'avance.

Répondre

7
newStr = original.Mid(4); 
+0

Merci. La fonction Mid fonctionne très bien pour moi. Assez gênant pour moi pourquoi Microsoft nomme cette fonction Mid() cependant. – stanigator

+1

Ils ont .Left, .Mid et .Right - est logique une fois que vous commencez à les utiliser. –

0

Il n'est pas si difficile de transformer un CString en une chaîne standard; le seul problème est que vous utilisez probablement Unicode si vous prenez les paramètres par défaut pour votre programme MFC. Cela signifie que vous voulez utiliser std::wstring au lieu de std::string.

Je n'ai pas testé cela, mais je pense que les conversions par défaut laisseront cela fonctionner. Sinon, transtypez CString en LPCTSTR.

std::wstring copyOfOriginal(original); 
Questions connexes