2014-06-16 108 views
-1

我已经做了大约一小时左右的研究,但是我找不到适合自己的方法,因为我不明白缓冲区是如何工作的。我试过了to_string方法,我试过.append()方法,显然是一个简单的连接方法。如何将int连接到字符串?

我的代码:

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

所以。这个或者我的想法的目的是为了跟踪我今天写的连接4游戏中的每一个动作。这应该附加每一步,以上述格式。 PlayerTurn存储为一个int,1是玩家1,2是玩家2,而moveColumn变量是用户选择放置棋子的列。如果玩家1将一段文字放入第4列,则该想法是将“1:4”附加到该变量,然后将该行写入文件。正如你所看到的,我已经尝试了一些方法,比如append,即使你看不到,我也尝试过to_string()方法,但是我得到一个错误或者“1:1”在dos窗口中给我一个笑脸,或在打开文件时在记事本++中为null。

我不想使用一种我不明白的方法,所以我很抱歉如果这是另一个线程的重复,我只是厌倦了盯着这一行代码,并且无法使用这些方法我在尝试。如果我必须使用缓冲区来做到这一点,那么很好,但是有人能够用一些新鲜的术语向我解释每一行的内容吗?

为了记录,我正在使用Visual Studio 2010,并且我90%确定我没有C++ 11,而我在某处阅读的原因是to_string未按预期工作。

+0

您能不能告诉你如何使用'to_string()',错误是什么? –

+0

原始类型不能让它们的操作符重载,所以你有:'int' +'char *'+'int'也被称为指向字符串'“的指针:”'由'playerTurn + moveColumn'递增,如果总和是更小的0或更大2. – Deduplicator

+0

可能重复[C++连接字符串和int](http://stackoverflow.com/questions/191757/c-concatenate-string-and-int)和[C++ int到字符串,连接字符串](http://stackoverflow.com/questions/18726568/c-int-to-string-concatenate-strings) – jww

回答

2

C++的方式做到这一点(即不使用c的缓冲区和sprintf)不使用C++ 11的to_string是使用构建字符串的ostringstream

#include <sstream> 

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

我在http://stackoverflow.com/questions/191757/c-concatenate-string-and-int上看到了这个,但没有人提到include文件。我想这就是我懒得研究。我会尽快回复并回复。 – Skjaz

+0

太棒了。对我的问题的一个非常直接的答案。我会在某处记下这一点。感谢您的解决方案。 – Skjaz