我是C++的新手,學習語言並玩耍。我寫了一段我不明白的行爲。有人可以解釋爲什麼下面的代碼打印出隨機垃圾,而不是列表中第一個字符串的第一個字符(即a
)。爲什麼我的函數在返回char時返回垃圾?
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>
#include <climits>
#include <stdio.h>
char* str2char(std::string str)
{
char cset[str.size()+1]; // +1 for the null character
for(int i = 0; i < str.size(); i++)
{
cset[i] = str[i];
}
cset[str.size()] = '\0';
return cset;
}
int main (int argc, char * const argv[]) {
std::vector<std::string> ladontakadet;
ladontakadet.push_back("aabcbbca");
ladontakadet.push_back("abcdabcd");
ladontakadet.push_back("cbbdcdaa");
ladontakadet.push_back("aadcbdca");
ladontakadet.push_back("cccbaaab");
ladontakadet.push_back("dabccbaa");
ladontakadet.push_back("ccbdcbad");
ladontakadet.push_back("bdcbccad");
ladontakadet.push_back("ddcadccb");
ladontakadet.push_back("baccddaa");
std::string v = ladontakadet.at(0);
char *r;
r = str2char(v);
std::cout << r[0] << std::endl;
return 0;
}
爲什麼我回來的垃圾,當我期待它輸出a
?
Thnx任何幫助!
P.S.這段代碼的輸出是隨機的。它並不總是打印相同的字符..:S
今後請不要發佈的代碼截圖,這使得它不可能複製代碼。 –
一個簡單的格式化代碼可以,圖像在這裏是一個矯枉過正。 – legends2k
+1好吧,對不起 – jjepsuomi