![](/img/trans.png)
[英]Conversion of const char** to std::vector<const char *>
[英]Extract part of a std::vector<char> to a const char*?
提取vector<char>
(假設我知道索引)以const char*
結尾將是最簡單的方法嗎? 我需要這樣做,以便可以將const char *傳遞給atoi()
和atol()
。
編輯:
long pp;
int qq;
memcpy( &pp, &My_Vector[25], 8);
memcpy( &qq, &My_Vector[19], 4);
q= qq;
p= static_cast<double>(pp)/1E8;
但是,當函數完成時:
運行時檢查失敗#2-變量'pp.51040'周圍的堆棧已損壞。
std :: vector保證順序存儲其所有元素,因此&vec [i]應該可以工作。 但這並不意味着指針將以零結尾。 您需要一個零終止字符串來與atoi或atol一起使用。
最安全的方法是將其復制到std :: string
std::string tmp(&vec[i], 9); // if substring is 9 characters long
現在使用tmp.c_str(),可以確保此代碼以零結尾。
在你的代碼中
const char* c = tmp.c_str();
p = atol(c);
結果導致未定義的行為,因為從c_str()返回的指針是臨時的。
嘗試這個:
p = atol( tmp.c_str());
memcpy( &p, &My_Vector[25], 8);
要么
p = * ((long *) &My_Vector[25]);
始終假設字節順序正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.