簡體   English   中英

如何將字符向量轉換為字符數組?

[英]How can I convert a char vector to a char array?

我正在讀取文件(圖像)的字節,然后轉換為 base64。

字節被寫入一個稱為緩沖區的字符向量中,因為我還沒有找到將文件中的字節寫入字符數組的工作示例

我像這樣做字符向量:

ifstream infile("image.png", ios_base::binary);

infile.seekg(0, ios_base::end);
size_t length = infile.tellg();
infile.seekg(0, ios_base::beg);

vector<char> buffer;
buffer.reserve(length);
copy(istreambuf_iterator<char>(infile),
    istreambuf_iterator<char>(),
    back_inserter(buffer)); infile.read(&buffer[0], length);

base64編碼函數為:

int base64_encode(unsigned char *source, size_t sourcelen, char *target, size_t targetlen);

我需要將 base64 編碼的文本發送到網站,以便它可以顯示在例如頁面上。

在 C++ 中,向量是動態分配的數組。 每當您調用.push_back()方法時,都會重新分配數組,並在數組末尾附加新數據。 如果您確實需要將數據從向量傳輸到常規數組中,您可以使用 for 循環將數據分配給數組,如下所示:

for (int i = 0; i < vec.size() && i < arrLen; i++) {
    arr[i] = vec[i];
}

盡管考慮向量只是動態分配的數組的更好方法是將向量的第一個元素的原始指針傳輸到函數。

foo(&vec[0]);

或者

foo(vec.begin());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM