2014-06-16 4 views
-1

J'ai fait une bonne heure de recherche, mais je ne trouve pas une méthode qui fonctionne pour moi que je comprenne vraiment, car je ne comprends pas comment fonctionnent les tampons. J'ai essayé la méthode to_string, j'ai essayé la méthode .append(), et évidemment, une méthode de concaténation simple.Comment concaténer un int à une chaîne?

Mon code:

fileLog[fileLogIndex].append(playerTurn+":"+moveColumn); 
//fileLog[fileLogIndex] += playerTurn && ":" && moveColumn && ", "; 

So. Le but de ceci, ou mon idée, était de garder une trace de chaque mouvement dans un jeu de connexion 4 que j'ai écrit aujourd'hui. Ceci était supposé ajouter chaque mouvement, dans le format mentionné ci-dessus. PlayerTurn est stocké sous la forme d'un int, 1 étant le lecteur 1, 2 étant le lecteur 2, et la variable moveColumn est la colonne que l'utilisateur a sélectionnée pour déposer sa pièce. Si le joueur 1 a déposé une pièce dans la colonne 4, l'idée était d'ajouter "1: 4" à la variable, puis d'écrire cette ligne dans un fichier.

Comme vous pouvez le voir, j'ai essayé quelques méthodes, comme append, et même si vous ne pouvez pas voir, j'ai essayé to_string() méthode, mais je reçois une erreur, ou "1: 1" me donne un smiley dans la fenêtre dos, ou un null dans le bloc note ++ lors de l'ouverture du fichier. Je ne veux pas utiliser une méthode que je ne comprends pas, donc je m'excuse si c'est une répétition d'un autre thread, je suis juste fatigué de regarder cette ligne de code et d'arriver nulle part avec les méthodes J'essaie. Si je dois utiliser un tampon pour faire cela, d'accord, mais quelqu'un peut-il m'expliquer, en termes un peu novices, ce que fait chaque ligne? Pour l'anecdote, j'utilise Visual Studio 2010, et je suis sûr à 90% que je n'ai pas C++ 11, que j'ai lu quelque part est la raison pour laquelle to_string ne fonctionne pas comme prévu pour moi ..

+0

Pouvez-vous montrer comment vous utilisaient 'to_string()', et quelle était l'erreur? –

+0

Les opérateurs primitifs des types primitifs ne peuvent pas être surchargés, vous avez donc: 'int' +' char * '+' int' aussi appelé pointeur sur la chaîne '": "' incrémentée par 'playerTurn + moveColumn', ce qui n'est pas valide si le sum est plus petit 0 ou plus grand 2. – Deduplicator

+0

Copie possible de [C++ concatenate string et int] (http://stackoverflow.com/questions/191757/c-concatenate-string-and-int) et [C++ int pour string, concaténer chaînes] (http://stackoverflow.com/questions/18726568/c-int-to-string-concatenate-strings) – jww

Répondre

2

le C++ façon de le faire (par exemple, sans utiliser les tampons de C et sprintf) qui n'utilise pas C++ 11 de to_string est en construisant la chaîne en utilisant un ostringstream:

#include <sstream> 

ostringstream out; 
out << playerTurn << ":" << moveColumn; 
fileLog[fileLogIndex] += out.str(); 
+0

J'ai vu cela sur http://stackoverflow.com/questions/191757/c-concatenate-string-and-int mais personne n'a mentionné le fichier include. Je suppose que c'était moi d'être trop paresseux pour la recherche cependant. Je vais essayer rapidement et revenir avec une réponse. – Skjaz

+0

Génial. Une réponse très directe à ma question. Je vais en prendre note quelque part. Merci pour votre solution. – Skjaz

Questions connexes