我是C++新手。我想制作一个char*
,但我不知道如何。
在Java它只是这样的:C++:如何构建字符串/ char *
int player = 0;
int cpu = 0;
String s = "You: " + player + " CPU: " + cpu;
我怎样才能做到这一点?我需要一个char*
。
我关注粘贴字符串后的整数。
我是C++新手。我想制作一个char*
,但我不知道如何。
在Java它只是这样的:C++:如何构建字符串/ char *
int player = 0;
int cpu = 0;
String s = "You: " + player + " CPU: " + cpu;
我怎样才能做到这一点?我需要一个char*
。
我关注粘贴字符串后的整数。
你几乎肯定不希望处理的char *如果你能帮助它 - 你需要的C++ std :: string类:
#include <string>
..
string name = "fred";
或相关的stringstream类:
#include <sstream>
#include <string>
#include <iostream>
using namespace std;
int main() {
int player = 0;
int cpu = 0;
ostringstream os;
os << "You: " << player << " CPU: " << cpu;
string s = os.str();
cout << s << endl;
}
如果你确实需要一个字符指针(你没有说出你为什么这么做),你可以使用它的c_str()成员函数从字符串中得到一个。
所有这些都应该包含在任何介绍性的C++教科书中。如果你还没有买过,请获得Accelerated C++。你无法单独从互联网资源中学习C++。
除了最后一条评论以外,还有其他一些事情......有一些非常出色的C++资源和教程,包括“初学者的C++”,“21天学习C++”,“Parashift C++ FAQ Lite”和“高级C++课程” 。当然,练习也是需要的。 – 2010-02-19 08:13:13
关于char *请求...假设函数不会写入字符串,可以使用const_cast
关于最后一条评论,请关注@MichaelAaronSafyan。我自己学习了C++,几乎没有编程经验,在购买单本书之前变得相当有能力。我想将http://www.learncpp.com/添加到列表中 - 它可能是网络上最好的介绍,即imo。 – Conduit 2015-10-07 16:02:30
只需致电s.c_str();
即可。 Here你可以看到更多。
PS。您可以使用strcpy
将内容复制到新变量,然后您就可以对其进行更改。
但是我得到一个'const char *',我需要'char *'。我尝试过'const_cast
我建议你详细说明你在这里要做的事情。 – 2010-02-18 13:51:06
尝试const_cast
char *
表示“指向角色的指针”。
您可以创建一个指向这样的 '字符串':
char* myString = "My long string";
或者您可以使用的std :: string:
std::string myStdString("Another long string");
const char* myStdString.c_str();
通知的常量在最后一个例子的开始。这意味着你不能改变指向的字符。你可以做同样的第一个例子:
const char* = "My long string";
考虑使用stringstreams:
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
int i = 10;
stringstream t;
t << "test " << i;
cout << t.str();
}
但它会返回字符串,而不是char *。 – 2010-02-18 13:55:08
我认为cout << const_cast
如果您使用C++,只需使用std::string
即可。如果你使用char*
,你可能想直接使用C语言。在C的情况下,可以使用sprintf
功能:
char* s = // initialized properly
sprintf(s, "You: %d CPU: %d", player, cpu);
我很新。我该如何初始化's'? – 2010-02-18 14:06:15
例如,对于动态分配,对于49个字符(字符串终止为+ 0个字符)或'char * s =新字符[50]',使用'char s [50]'。 – 2010-02-18 14:40:13
或许,这将一直是最好的,如果C++超载了“+”操作符像你这样的表现。可悲的是,他们没有(你可以,如果你想的话)。
基本上有三种方法将整型变量转换为C++中的字符串;两个从C继承而来,另一个为C++创建。
你究竟想要做什么?你需要一个方法,需要一个char *并对它做什么?你后来在你的文章中与你的例子相矛盾。请清楚你需要什么。 – IVlad 2010-02-18 14:05:58
既然你坚持不使用C++构造,你应该从你的问题中删除C++,而不是问C。在哪个时候你可以接受sprintf答案。 – KevinDTimm 2010-02-18 14:13:16
不可以。您的编译器没有损坏。 – nos 2010-02-18 15:03:20