我是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